/* * Copyright 2014 Diogo Bernardino * * 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.db.chart.model; import java.util.ArrayList; /** * Data model containing {@link ChartEntry} elements to be used by {@link ChartView}. */ public class ChartSet { /** Set with entries */ private ArrayList<ChartEntry> mEntries; /** Paint alpha value from 0 to 1 */ private float mAlpha; /** Whether the set will be visible or not */ private boolean mIsVisible; public ChartSet(){ mEntries = new ArrayList<ChartEntry>(); mAlpha = 1; mIsVisible = false; } protected void addEntry(String label, float value){ mEntries.add(new ChartEntry(label, value)); } protected void addEntry(ChartEntry e){ mEntries.add(e); } /** * Updates set values. * * @param newValues * @return float[] with X and Y coordinates of old values */ public float[][] updateValues(float[] newValues){ int nEntries = size(); float[][] result = new float[nEntries][2]; for(int i = 0; i < nEntries; i++){ result[i][0] = mEntries.get(i).getX(); result[i][1] = mEntries.get(i).getY(); setValue(i, newValues[i]); } return result; } /* * -------- * Getters * -------- */ /** * Get set of {@link ChartEntry}s. */ public ArrayList<ChartEntry> getEntries(){ return mEntries; } /** * Get {@link ChartEntry} from specific index. * * @param index - Entry's index */ public ChartEntry getEntry(int index) { return mEntries.get(index); } /** * Get {@link ChartEntry} value from specific index. * * @param index Value's index */ public float getValue(int index){ return mEntries.get(index).getValue(); } /** * Get {@link ChartEntry} label from specific index. * * @param index Label's index */ public String getLabel(int index) { return mEntries.get(index).getLabel(); } /** * Get screen points. */ public float[][] getScreenPoints(){ int nEntries = size(); float[][] result = new float[nEntries][2]; for(int i = 0; i < nEntries; i++){ result[i][0] = mEntries.get(i).getX(); result[i][1] = mEntries.get(i).getY(); } return result; } /** * Get current set's alpha. */ public float getAlpha(){ return mAlpha; } /** * Get whether the set should be presented or not. */ public boolean isVisible(){ return mIsVisible; } /* * -------- * Setters * -------- */ /** * Set {@link ChartEntry} value at specific index position. * * @param index Value's index where value will be placed */ private void setValue(int index, float value){ mEntries.get(index).setValue(value); } /** * Set set's alpha. */ public void setAlpha(float alpha){ mAlpha = (alpha < 1) ? alpha : 1; } /** * Set whether the set should be visible or not. */ public void setVisible(boolean visible){ mIsVisible = visible; } public String toString(){ return mEntries.toString(); } public int size() { return mEntries.size(); } }