blob: 28f0ce52d8dd654edf180d8a4d71f1e6e31c2354 [file] [log] [blame]
/*
* Copyright 2012 AndroidPlot.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.androidplot.ui;
import android.graphics.RectF;
import com.androidplot.util.PixelUtils;
/**
* Encapsulates sizing preferences associated with a Widget; how/if it scales etc.
*/
public class SizeMetrics {
private SizeMetric heightMetric;
private SizeMetric widthMetric;
/**
* Convenience constructor. Wraps {@link #SizeMetrics(SizeMetric, SizeMetric)}.
* @param height Height value used algorithm to calculate the height of the associated widget(s).
* @param heightLayoutType Algorithm used to calculate the height of the associated widget(s).
* @param width Width value used algorithm to calculate the width of the associated widget(s).
* @param widthLayoutType Algorithm used to calculate the width of the associated widget(s).
*/
public SizeMetrics(float height, SizeLayoutType heightLayoutType, float width, SizeLayoutType widthLayoutType) {
heightMetric = new SizeMetric(height, heightLayoutType);
widthMetric = new SizeMetric(width, widthLayoutType);
}
/**
* Creates a new SizeMetrics instance using the specified size layout algorithm and value.
* See {@link SizeMetric} for details on what can be passed in.
* @param heightMetric
* @param widthMetric
*/
public SizeMetrics(SizeMetric heightMetric, SizeMetric widthMetric) {
this.heightMetric = heightMetric;
this.widthMetric = widthMetric;
}
public SizeMetric getHeightMetric() {
return heightMetric;
}
public void setHeightMetric(SizeMetric heightMetric) {
this.heightMetric = heightMetric;
}
public SizeMetric getWidthMetric() {
return widthMetric;
}
/**
* Calculates a RectF with calculated width and height. The top-left corner is set to 0,0.
* @param canvasRect
* @return
*/
public RectF getRectF(RectF canvasRect) {
return new RectF(
0,
0,
widthMetric.getPixelValue(canvasRect.width()),
heightMetric.getPixelValue(canvasRect.height()));
}
/**
* Same as getRectF but with edges rounded to the nearest full pixel.
* @param canvasRect
* @return
*/
public RectF getRoundedRect(RectF canvasRect) {
return PixelUtils.nearestPixRect(0, 0, widthMetric.getPixelValue(canvasRect.width()),
heightMetric.getPixelValue(canvasRect.height()));
}
public void setWidthMetric(SizeMetric widthMetric) {
this.widthMetric = widthMetric;
}
}