aboutsummaryrefslogtreecommitdiffstats
path: root/ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java')
-rw-r--r--ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java b/ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java
new file mode 100644
index 0000000..3af1447
--- /dev/null
+++ b/ddms/libs/ddmuilib/src/com/android/ddmuilib/log/event/OccurrenceRenderer.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.android.ddmuilib.log.event;
+
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CrosshairState;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.PlotRenderingInfo;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.chart.renderer.xy.XYItemRendererState;
+import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.data.time.TimeSeriesCollection;
+import org.jfree.data.xy.XYDataset;
+import org.jfree.ui.RectangleEdge;
+
+import java.awt.Graphics2D;
+import java.awt.Paint;
+import java.awt.Stroke;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Custom renderer to render event occurrence. This rendered ignores the y value, and simply
+ * draws a line from min to max at the time of the item.
+ */
+public class OccurrenceRenderer extends XYLineAndShapeRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void drawItem(Graphics2D g2,
+ XYItemRendererState state,
+ Rectangle2D dataArea,
+ PlotRenderingInfo info,
+ XYPlot plot,
+ ValueAxis domainAxis,
+ ValueAxis rangeAxis,
+ XYDataset dataset,
+ int series,
+ int item,
+ CrosshairState crosshairState,
+ int pass) {
+ TimeSeriesCollection timeDataSet = (TimeSeriesCollection)dataset;
+
+ // get the x value for the series/item.
+ double x = timeDataSet.getX(series, item).doubleValue();
+
+ // get the min/max of the range axis
+ double yMin = rangeAxis.getLowerBound();
+ double yMax = rangeAxis.getUpperBound();
+
+ RectangleEdge domainEdge = plot.getDomainAxisEdge();
+ RectangleEdge rangeEdge = plot.getRangeAxisEdge();
+
+ // convert the coordinates to java2d.
+ double x2D = domainAxis.valueToJava2D(x, dataArea, domainEdge);
+ double yMin2D = rangeAxis.valueToJava2D(yMin, dataArea, rangeEdge);
+ double yMax2D = rangeAxis.valueToJava2D(yMax, dataArea, rangeEdge);
+
+ // get the paint information for the series/item
+ Paint p = getItemPaint(series, item);
+ Stroke s = getItemStroke(series, item);
+
+ Line2D line = null;
+ PlotOrientation orientation = plot.getOrientation();
+ if (orientation == PlotOrientation.HORIZONTAL) {
+ line = new Line2D.Double(yMin2D, x2D, yMax2D, x2D);
+ }
+ else if (orientation == PlotOrientation.VERTICAL) {
+ line = new Line2D.Double(x2D, yMin2D, x2D, yMax2D);
+ }
+ g2.setPaint(p);
+ g2.setStroke(s);
+ g2.draw(line);
+ }
+}