aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Palmer <felix.palmer@metaswitch.com>2011-12-05 15:16:11 -0800
committerFelix Palmer <felix.palmer@metaswitch.com>2011-12-05 15:16:11 -0800
commite0c6d6f3ed2a473a6d11594a38db715b60a5ef88 (patch)
treee6b268ded54018f606f79a1552b22d0f011217de
parent2c13b2787e7b4eb9a2e406677fdd4230088d96f7 (diff)
downloadandroid_external_android-visualizer-e0c6d6f3ed2a473a6d11594a38db715b60a5ef88.tar.gz
android_external_android-visualizer-e0c6d6f3ed2a473a6d11594a38db715b60a5ef88.tar.bz2
android_external_android-visualizer-e0c6d6f3ed2a473a6d11594a38db715b60a5ef88.zip
Refactor so we pass canvas on render, rather than
in constructor
-rw-r--r--src/com/pheelicks/visualizer/VisualizerView.java16
-rw-r--r--src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java12
-rw-r--r--src/com/pheelicks/visualizer/renderer/CircleRenderer.java19
-rw-r--r--src/com/pheelicks/visualizer/renderer/LineRenderer.java22
-rw-r--r--src/com/pheelicks/visualizer/renderer/Renderer.java22
5 files changed, 39 insertions, 52 deletions
diff --git a/src/com/pheelicks/visualizer/VisualizerView.java b/src/com/pheelicks/visualizer/VisualizerView.java
index 215a0e5..613218a 100644
--- a/src/com/pheelicks/visualizer/VisualizerView.java
+++ b/src/com/pheelicks/visualizer/VisualizerView.java
@@ -185,19 +185,19 @@ public class VisualizerView extends View {
paint.setStrokeWidth(50f);
paint.setAntiAlias(true);
paint.setColor(Color.argb(200, 233, 0, 44));
- mBarGraphRendererBottom = new BarGraphRenderer(mCanvas, 16, paint, false);
+ mBarGraphRendererBottom = new BarGraphRenderer(16, paint, false);
Paint paint2 = new Paint();
paint2.setStrokeWidth(12f);
paint2.setAntiAlias(true);
paint2.setColor(Color.argb(200, 11, 111, 233));
- mBarGraphRendererTop = new BarGraphRenderer(mCanvas, 4, paint2, true);
+ mBarGraphRendererTop = new BarGraphRenderer(4, paint2, true);
Paint paint3 = new Paint();
paint3.setStrokeWidth(3f);
paint3.setAntiAlias(true);
paint3.setColor(Color.argb(255, 222, 92, 143));
- mCircleRenderer = new CircleRenderer(mCanvas, paint3, true);
+ mCircleRenderer = new CircleRenderer(paint3, true);
Paint linePaint = new Paint();
linePaint.setStrokeWidth(1f);
@@ -208,21 +208,21 @@ public class VisualizerView extends View {
lineFlashPaint.setStrokeWidth(5f);
lineFlashPaint.setAntiAlias(true);
lineFlashPaint.setColor(Color.argb(188, 255, 255, 255));
- mLineRenderer = new LineRenderer(mCanvas, linePaint, lineFlashPaint, true);
+ mLineRenderer = new LineRenderer(linePaint, lineFlashPaint, true);
}
if (mBytes != null) {
// Render all audio renderers
AudioData audioData = new AudioData(mBytes);
- mCircleRenderer.render(audioData, mRect);
- mLineRenderer.render(audioData, mRect);
+ mCircleRenderer.render(mCanvas, audioData, mRect);
+ mLineRenderer.render(mCanvas, audioData, mRect);
}
if (mFFTBytes != null) {
// Render all FFT renderers
FFTData fftData = new FFTData(mFFTBytes);
- mBarGraphRendererTop.render(fftData, mRect);
- mBarGraphRendererBottom.render(fftData, mRect);
+ mBarGraphRendererTop.render(mCanvas, fftData, mRect);
+ mBarGraphRendererBottom.render(mCanvas, fftData, mRect);
}
// Fade out old contents
diff --git a/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java b/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java
index 0901b4b..b17a695 100644
--- a/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java
@@ -21,30 +21,28 @@ public class BarGraphRenderer extends Renderer
/**
* Renders the FFT data as a series of lines, in histogram form
- * @param canvas
* @param divisions - must be a power of 2. Controls how many lines to draw
* @param paint - Paint to draw lines with
* @param top - whether to draw the lines at the top of the canvas, or the bottom
*/
- public BarGraphRenderer(Canvas canvas,
- int divisions,
+ public BarGraphRenderer(int divisions,
Paint paint,
boolean top)
{
- super(canvas);
+ super();
mDivisions = divisions;
mPaint = paint;
mTop = top;
}
@Override
- public void onRender(AudioData data, Rect rect)
+ public void onRender(Canvas canvas, AudioData data, Rect rect)
{
// Do nothing, we only display FFT data
}
@Override
- public void onRender(FFTData data, Rect rect)
+ public void onRender(Canvas canvas, FFTData data, Rect rect)
{
for (int i = 0; i < data.bytes.length / mDivisions; i++) {
mFFTPoints[i * 4] = i * 4 * mDivisions;
@@ -66,6 +64,6 @@ public class BarGraphRenderer extends Renderer
}
}
- mCanvas.drawLines(mFFTPoints, mPaint);
+ canvas.drawLines(mFFTPoints, mPaint);
}
}
diff --git a/src/com/pheelicks/visualizer/renderer/CircleRenderer.java b/src/com/pheelicks/visualizer/renderer/CircleRenderer.java
index 1f159b2..8c7fab5 100644
--- a/src/com/pheelicks/visualizer/renderer/CircleRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/CircleRenderer.java
@@ -24,12 +24,9 @@ public class CircleRenderer extends Renderer
* @param canvas
* @param paint - Paint to draw lines with
*/
- public CircleRenderer(Canvas canvas,
- Paint paint)
+ public CircleRenderer(Paint paint)
{
- this(canvas,
- paint,
- false);
+ this(paint, false);
}
/**
@@ -38,17 +35,15 @@ public class CircleRenderer extends Renderer
* @param paint - Paint to draw lines with
* @param cycleColor - If true the color will change on each frame
*/
- public CircleRenderer(Canvas canvas,
- Paint paint,
- boolean cycleColor)
+ public CircleRenderer(Paint paint, boolean cycleColor)
{
- super(canvas);
+ super();
mPaint = paint;
mCycleColor = cycleColor;
}
@Override
- public void onRender(AudioData data, Rect rect)
+ public void onRender(Canvas canvas, AudioData data, Rect rect)
{
if(mCycleColor)
{
@@ -75,14 +70,14 @@ public class CircleRenderer extends Renderer
mPoints[i * 4 + 3] = polarPoint2[1];
}
- mCanvas.drawLines(mPoints, mPaint);
+ canvas.drawLines(mPoints, mPaint);
// Controls the pulsing rate
modulation += 0.04;
}
@Override
- public void onRender(FFTData data, Rect rect)
+ public void onRender(Canvas canvas, FFTData data, Rect rect)
{
// Do nothing, we only display audio data
}
diff --git a/src/com/pheelicks/visualizer/renderer/LineRenderer.java b/src/com/pheelicks/visualizer/renderer/LineRenderer.java
index 494f252..55de67d 100644
--- a/src/com/pheelicks/visualizer/renderer/LineRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/LineRenderer.java
@@ -28,14 +28,9 @@ public class LineRenderer extends Renderer
* @param paint - Paint to draw lines with
* @param paint - Paint to draw flash with
*/
- public LineRenderer(Canvas canvas,
- Paint paint,
- Paint flashPaint)
+ public LineRenderer(Paint paint, Paint flashPaint)
{
- this(canvas,
- paint,
- flashPaint,
- false);
+ this(paint, flashPaint, false);
}
/**
@@ -45,19 +40,18 @@ public class LineRenderer extends Renderer
* @param paint - Paint to draw flash with
* @param cycleColor - If true the color will change on each frame
*/
- public LineRenderer(Canvas canvas,
- Paint paint,
+ public LineRenderer(Paint paint,
Paint flashPaint,
boolean cycleColor)
{
- super(canvas);
+ super();
mPaint = paint;
mFlashPaint = flashPaint;
mCycleColor = cycleColor;
}
@Override
- public void onRender(AudioData data, Rect rect)
+ public void onRender(Canvas canvas, AudioData data, Rect rect)
{
if(mCycleColor)
{
@@ -85,18 +79,18 @@ public class LineRenderer extends Renderer
{
// Amplitude is bigger than normal, make a prominent line
amplitude = amp;
- mCanvas.drawLines(mPoints, mFlashPaint);
+ canvas.drawLines(mPoints, mFlashPaint);
}
else
{
// Amplitude is nothing special, reduce the amplitude
amplitude *= 0.99;
- mCanvas.drawLines(mPoints, mPaint);
+ canvas.drawLines(mPoints, mPaint);
}
}
@Override
- public void onRender(FFTData data, Rect rect)
+ public void onRender(Canvas canvas, FFTData data, Rect rect)
{
// Do nothing, we only display audio data
}
diff --git a/src/com/pheelicks/visualizer/renderer/Renderer.java b/src/com/pheelicks/visualizer/renderer/Renderer.java
index ada0caa..12be4b8 100644
--- a/src/com/pheelicks/visualizer/renderer/Renderer.java
+++ b/src/com/pheelicks/visualizer/renderer/Renderer.java
@@ -14,60 +14,60 @@ import com.pheelicks.visualizer.FFTData;
abstract public class Renderer
{
- // Canvas & Rect to render to
- protected Canvas mCanvas;
-
// Have these as members, so we don't have to re-create them each time
protected float[] mPoints;
protected float[] mFFTPoints;
- public Renderer(Canvas canvas)
+ public Renderer()
{
- mCanvas = canvas;
}
// As the display of raw/FFT audio will usually look different, subclasses
// will typically only implement one of the below methods
/**
* Implement this method to render the audio data onto the canvas
+ * @param canvas - Canvas to draw on
* @param data - Data to render
* @param rect - Rect to render into
*/
- abstract public void onRender(AudioData data, Rect rect);
+ abstract public void onRender(Canvas canvas, AudioData data, Rect rect);
/**
* Implement this method to render the FFT audio data onto the canvas
+ * @param canvas - Canvas to draw on
* @param data - Data to render
* @param rect - Rect to render into
*/
- abstract public void onRender(FFTData data, Rect rect);
+ abstract public void onRender(Canvas canvas, FFTData data, Rect rect);
// These methods should actually be called for rendering
/**
* Render the audio data onto the canvas
+ * @param canvas - Canvas to draw on
* @param data - Data to render
* @param rect - Rect to render into
*/
- final public void render(AudioData data, Rect rect)
+ final public void render(Canvas canvas, AudioData data, Rect rect)
{
if (mPoints == null || mPoints.length < data.bytes.length * 4) {
mPoints = new float[data.bytes.length * 4];
}
- onRender(data, rect);
+ onRender(canvas, data, rect);
}
/**
* Render the FFT data onto the canvas
+ * @param canvas - Canvas to draw on
* @param data - Data to render
* @param rect - Rect to render into
*/
- final public void render(FFTData data, Rect rect)
+ final public void render(Canvas canvas, FFTData data, Rect rect)
{
if (mFFTPoints == null || mFFTPoints.length < data.bytes.length * 4) {
mFFTPoints = new float[data.bytes.length * 4];
}
- onRender(data, rect);
+ onRender(canvas, data, rect);
}
}