From fefaa7b4ed53c93bff23ea35d7ba0a69ebd33734 Mon Sep 17 00:00:00 2001 From: "yeongtaik.byeon" Date: Thu, 13 Sep 2012 16:08:45 +0900 Subject: [PATCH] [Title]chart update(keep up custom chart end value, polygon gap modified) [Type]update [Module]chart [Priority]normal [CQ#] [Redmine#]6184 [Problem] [Cause] [Solution] [TestCase] --- .../widgets/chart/DACustomChartPlot.java | 133 ++++++++++++--------- .../widgets/chart/DACustomChartRenderer.java | 43 +++++-- .../widgets/chart/DACustomChartSeries.java | 3 + .../timeline/TimelineItemManager.java | 4 +- .../timeline/chart/UserCustomChart.java | 34 +++++- 5 files changed, 144 insertions(+), 73 deletions(-) diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java index 3e82c76..4ee084a 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java @@ -29,51 +29,53 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; public class DACustomChartPlot { - private double startX = 0; - private double endX = 0; - private double startY = 0; - private double endY = 0; + private double visibleStartX = 0; + private double visibleEndX = 0; + private double visibleStartY = 0; + private double visibleEndY = 0; + private double validEndX = 0; + private double validEndY = 0; private boolean bAutoHeightRange = false; private boolean bSeriesHeightRange = false; private Image backgroundImage = null; private DACustomChart chart; private DACustomChartPlotIntervalMarker marker = null; private DACustomChartPlotTooltip tooltip = null; - + public DACustomChartPlot(DACustomChart chart) { this.chart = chart; } - public void setChart(DACustomChart chart){ + public void setChart(DACustomChart chart) { this.chart = chart; } - + public DACustomChart getChart() { return chart; } public void clear() { - startX = 0; - endX = 0; - startY = 0; - endY = 0; + visibleStartX = 0; + visibleEndX = 0; + visibleStartY = 0; + visibleEndY = 0; removeIntervalMarker(); removeTooltip(); } - public void setIntervalMarker(DACustomChartPlotIntervalMarker marker){ + public void setIntervalMarker(DACustomChartPlotIntervalMarker marker) { this.marker = marker; this.marker.registerChart(chart); } - - public void removeIntervalMarker(){ - if(null!=marker){ + + public void removeIntervalMarker() { + if (null != marker) { this.marker.unRegisterChart(chart); this.marker = null; } } - - public DACustomChartPlotIntervalMarker getIntervalMarker(){ + + public DACustomChartPlotIntervalMarker getIntervalMarker() { return marker; } @@ -81,42 +83,42 @@ public class DACustomChartPlot { this.tooltip = tooltip; this.tooltip.registerChart(chart); } - - public void removeTooltip(){ - if(null!=tooltip){ + + public void removeTooltip() { + if (null != tooltip) { this.tooltip.unRegisterChart(chart); this.tooltip = null; } } - + public DACustomChartPlotTooltip getTooltip() { return tooltip; } public void setAxisRangeX(double startX, double endX) { - this.startX = startX; - this.endX = endX; + this.visibleStartX = startX; + this.visibleEndX = endX; } public void setAxisRangeY(double startY, double endY) { - this.startY = startY; - this.endY = endY; + this.visibleStartY = startY; + this.visibleEndY = endY; } public void setAxisStartX(double startX) { - this.startX = startX; + this.visibleStartX = startX; } public void setAxisEndX(double endX) { - this.endX = endX; + this.visibleEndX = endX; } public void setAxisStartY(double startY) { - this.startY = startY; + this.visibleStartY = startY; } public void setAxisEndY(double endY) { - this.endY = endY; + this.visibleEndY = endY; } public boolean isAutoHeightRange() { @@ -127,29 +129,28 @@ public class DACustomChartPlot { bAutoHeightRange = auto; } - public boolean isSeriesHeightRange() { return bSeriesHeightRange; } - + public void setSeriesHeightRange(boolean bSeriesHeightRange) { this.bSeriesHeightRange = bSeriesHeightRange; } - - public double getStartX() { - return startX; + + public double getVisibleStartX() { + return visibleStartX; } - public double getEndX() { - return endX; + public double getVisibleEndX() { + return visibleEndX; } - public double getStartY() { - return startY; + public double getVisibleStartY() { + return visibleStartY; } - public double getEndY() { - return endY; + public double getVisibleEndY() { + return visibleEndY; } public void setBackgroundImage(Image image) { @@ -161,7 +162,7 @@ public class DACustomChartPlot { } public int getXPixcelFromX(double x, Rectangle r) { - return (int) (((double) r.width) * (x - startX) / (endX - startX)); + return (int) (((double) r.width) * (x - visibleStartX) / (visibleEndX - visibleStartX)); } public int getXPixcelFromX(double x) { @@ -171,35 +172,34 @@ public class DACustomChartPlot { public int getYPixcelFromY(DACustomChartSeries series, double y, Rectangle r) { double endY = 0; - if(true == bSeriesHeightRange){ - if(true == bAutoHeightRange){ - endY = series.getMaxY()*1.1; - } - else{ - endY = series.getEndY()*1.1; + if (true == bSeriesHeightRange) { + if (true == bAutoHeightRange) { + endY = series.getMaxY() * 1.1; + } else { + endY = series.getEndY() * 1.1; } + } else { + endY = this.visibleEndY; } - else{ - endY = this.endY; - } - + double pixcelY; - if(startY == endY){ + if (visibleStartY == endY) { pixcelY = 0; - } - else{ - pixcelY = ((double) r.height) * (y - startY) / (endY - startY); + } else { + pixcelY = ((double) r.height) * (y - visibleStartY) + / (endY - visibleStartY); } return (int) (r.height - pixcelY - 1); } - + public int getYPixcelFromY(DACustomChartSeries series, double y) { Rectangle r = chart.getBounds(); return getYPixcelFromY(series, y, r); } public double getXFromXPixcel(int xPixcel, Rectangle r) { - return (((endX - startX) * (double) xPixcel) / (double) r.width) + startX; + return (((visibleEndX - visibleStartX) * (double) xPixcel) / (double) r.width) + + visibleStartX; } public double getXFromXPixcel(int xPixcel) { @@ -209,11 +209,28 @@ public class DACustomChartPlot { public double getYFromYPixcel(int yPixcel, Rectangle r) { int y = yPixcel + r.height + 1; - return (((endY - startY) * (double) y) / (double) r.height) + startY; + return (((visibleEndY - visibleStartY) * (double) y) / (double) r.height) + + visibleStartY; } public double getYFromYPixcel(int yPixcel) { Rectangle r = chart.getBounds(); return getYFromYPixcel(yPixcel, r); } + + public double getValidEndX() { + return validEndX; + } + + public void setValidEndX(double validEndX) { + this.validEndX = validEndX; + } + + public double getValidEndY() { + return validEndY; + } + + public void setValidEndY(double validEndY) { + this.validEndY = validEndY; + } } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java index 196fe69..16df293 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java @@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Display; public class DACustomChartRenderer { private boolean bInitialized = false; @@ -66,7 +67,7 @@ public class DACustomChartRenderer { maxY = tempY; } } - if (maxY * 1.1 > plot.getEndY() * 1.1) { + if (maxY * 1.1 > plot.getVisibleEndY() * 1.1) { plot.setAxisEndY(maxY * 1.1); } } @@ -245,7 +246,7 @@ public class DACustomChartRenderer { gc.setAlpha((int) (255*0.8)); gc.setAntialias(SWT.ON); - int index = series.getPrevIndexByXvalue(plot.getStartX()); + int index = series.getPrevIndexByXvalue(plot.getVisibleStartX()); if (index < 0) { index = 0; } @@ -282,7 +283,7 @@ public class DACustomChartRenderer { gc.fillRectangle(pixcelStartX, pixcelStartY, barWidth - pixcelStartX, r.y + r.height - pixcelStartY); } - if (currentX > plot.getEndX()) { + if (currentX > plot.getVisibleEndX()) { break; } } @@ -320,7 +321,7 @@ public class DACustomChartRenderer { gc.setLineStyle(SWT.LINE_SOLID); gc.setAntialias(SWT.ON); - int index = series.getPrevIndexByXvalue(plot.getStartX()); + int index = series.getPrevIndexByXvalue(plot.getVisibleStartX()); if (index < 0) { index = 0; } @@ -329,7 +330,7 @@ public class DACustomChartRenderer { double currentX = seriesItem.getX(); int newPixcelX = plot.getXPixcelFromX(currentX, r); - ; + int newPixcelY = plot.getYPixcelFromY(series, seriesItem.getY(), r); for (int i = index; i < seriesItemSize; i++) { @@ -343,10 +344,17 @@ public class DACustomChartRenderer { newPixcelY = plot.getYPixcelFromY(series, seriesItem.getY(), r); gc.drawLine(oldPixcelX, oldPixcelY, newPixcelX, newPixcelY); - if (currentX > plot.getEndX()) { - break; + if (currentX > plot.getVisibleEndX()) { + return; } } + // draw endVal + int endX = plot.getXPixcelFromX(plot.getValidEndX(), r); + if(endX > newPixcelX){ + gc.setLineStyle(SWT.LINE_DOT); + gc.drawLine(newPixcelX, newPixcelY, endX, newPixcelY); + gc.setLineStyle(SWT.LINE_CUSTOM); + } } private void drawAreaSeries(GC gc, DACustomChartSeries series) { @@ -381,8 +389,9 @@ public class DACustomChartRenderer { Color color = series.getColor(); gc.setAntialias(SWT.ON); gc.setAlpha((int) (255*0.8)); + gc.setForeground(color); gc.setBackground(color); - int index = series.getPrevIndexByXvalue(plot.getStartX()); + int index = series.getPrevIndexByXvalue(plot.getVisibleStartX()); if (index < 0) { index = 0; } @@ -391,7 +400,6 @@ public class DACustomChartRenderer { double currentX = seriesItem.getX(); int newPixcelX = plot.getXPixcelFromX(currentX, r); - ; int newPixcelY = plot.getYPixcelFromY(series, seriesItem.getY(), r); for (int i = index; i < seriesItemSize; i++) { @@ -405,12 +413,23 @@ public class DACustomChartRenderer { newPixcelY = plot.getYPixcelFromY(series, seriesItem.getY(), r); int[] polygon = { oldPixcelX, baseY, oldPixcelX, oldPixcelY, newPixcelX, newPixcelY, newPixcelX, baseY }; - + gc.setAlpha((int) (255*0.8)); gc.fillPolygon(polygon); - if (currentX > plot.getEndX()) { - break; + gc.setAlpha((int) (255*0.2)); + gc.drawPolygon(polygon); + if (currentX > plot.getVisibleEndX()) { + gc.setAlpha(255); + return; } } + // draw endVal + int endX = plot.getXPixcelFromX(plot.getValidEndX(), r); + if(endX > newPixcelX){ + gc.setAlpha((int) (255*0.4)); + int[] polygon = { newPixcelX, baseY, newPixcelX, newPixcelY, + endX, newPixcelY, endX, baseY }; + gc.fillPolygon(polygon); + } gc.setAlpha(255); } } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartSeries.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartSeries.java index fddc88e..a5aedc3 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartSeries.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartSeries.java @@ -36,6 +36,9 @@ public class DACustomChartSeries { public static final int SERIES_STYLE_BAR = 2; public static final int SERIES_STYLE_AREA = 3; public static final int SERIES_STYLE_EVENT = 4; + public static final int SERIES_STYLE_STEP = 5; + public static final int SERIES_STYLE_IMAGE = 6; + public static final int SERIES_STYLE_STACK = 7; public static final int SERIES_DEFAULT_BAR_WIDTH = 1; private String name; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java index 15e72b5..924759c 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java @@ -224,11 +224,11 @@ public class TimelineItemManager { tooltip.setTooltip(true); double endVal = plot.getXFromXPixcel(event.x); - if(endVal <= plot.getEndX()){ + if(endVal <= plot.getVisibleEndX()){ intervalMarker.setEndVal(endVal); } else{ - intervalMarker.setEndVal(plot.getEndX()); + intervalMarker.setEndVal(plot.getVisibleEndX()); } sendSelectionTimes(intervalMarker.getStartVal(),intervalMarker.getEndVal()); break; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/UserCustomChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/UserCustomChart.java index 2a6867e..ffb260d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/UserCustomChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/UserCustomChart.java @@ -31,7 +31,10 @@ import java.util.List; import org.eclipse.swt.widgets.Composite; import org.tizen.dynamicanalyzer.ImageResources; +import org.tizen.dynamicanalyzer.constants.LogCenterConstants; +import org.tizen.dynamicanalyzer.constants.TimelineConstants; import org.tizen.dynamicanalyzer.model.LogPackage; +import org.tizen.dynamicanalyzer.model.Logs; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeries; @@ -74,10 +77,39 @@ public class UserCustomChart extends TimelineChart { public void dispose() { // TODO Auto-generated method stub } - + @Override public void parsingLogPackage(LogPackage logPack, int probeType) { // TODO Auto-generated method stub + if (!isAbleToParse(logPack, LogCenterConstants.LOG_DEVICE)) { + return; + } + Logs logList = logPack.getLogs(LogCenterConstants.LOG_DEVICE); + List> logs = logList.getLogs(); + + if(logs.size() <= 0){ + return; + } + parsingLog(logs.get(logs.size()-1)); + } + + private void parsingLog(List log) { + double time = 0; + + try { + time = Double + .parseDouble(log + .get(LogCenterConstants.DEVICE_TIME_INDEX)) + / TimelineConstants.TIME_US_TO_MS + / TimelineConstants.TIME_US_TO_MS; + } catch (NumberFormatException ne) { + ne.printStackTrace(); + } catch (NullPointerException ne) { + ne.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + chart.getPlot().setValidEndX(time); } public void addSeries(DACustomChartSeries series) { -- 2.7.4