package de.tu.darmstadt.seemoo.ansian.drawables;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import de.tu.darmstadt.seemoo.ansian.model.preferences.ColorPreference;
import de.tu.darmstadt.seemoo.ansian.model.preferences.MiscPreferences;
import de.tu.darmstadt.seemoo.ansian.model.preferences.Preferences;
/**
* Drawable for the dB scale in AnalyzerSurface
*
*/
public class PowerGridDrawable extends MyDrawable {
MiscPreferences preferences;
private int gridWidth = 100;
private int gridHeight = 200;
public PowerGridDrawable(int gridHeight) {
preferences = Preferences.MISC_PREFERENCE;
this.gridWidth = Preferences.GUI_PREFERENCE.getGridSize();
this.gridHeight = gridHeight;
}
public void setDimensions(int height) {
this.gridWidth = Preferences.GUI_PREFERENCE.getGridSize();
this.gridHeight = height;
}
@Override
public void draw(Canvas canvas) {
final float minDB = Preferences.GUI_PREFERENCE.getCurMinDB();
final float maxDB = Preferences.GUI_PREFERENCE.getCurMaxDB();
// final int gridSize = analyzerSurface.getGridSize();
// final int fftHeight = analyzerSurface.getFftHeight();
// Calculate pixel height of a minor tick (1dB)
float pixelPerMinorTick = (float) (gridHeight / (maxDB - minDB));
// Draw the ticks from the top to the bottom. Stop as soon as we
// interfere with the frequency scale
int tickDB = (int) maxDB;
float tickPos = (maxDB - tickDB) * pixelPerMinorTick;
for (; tickDB > minDB; tickDB--) {
float tickWidth;
if (tickDB % 10 == 0) {
// Major Tick (10dB)
tickWidth = (float) ((gridWidth) / 3.0);
// Draw Frequency Text:
canvas.drawText("" + tickDB, (float) (gridWidth / 2.9), tickPos, ColorPreference.TEXT_PAINT);
} else if (tickDB % 5 == 0) {
// 5 dB tick
tickWidth = (float) (gridWidth / 3.5);
} else {
// Minor tick
tickWidth = (float) (gridWidth / 5.0);
}
canvas.drawLine(0, tickPos, tickWidth, tickPos, ColorPreference.TEXT_PAINT);
tickPos += pixelPerMinorTick;
// stop if we interfere with the frequency grid:
if (tickPos > gridHeight - gridWidth)
break;
}
}
@Override
public void setAlpha(int alpha) {
// TODO Auto-generated method stub
}
@Override
public void setColorFilter(ColorFilter cf) {
// TODO Auto-generated method stub
}
@Override
public int getOpacity() {
// TODO Auto-generated method stub
return 0;
}
}