From: SourceForge.net <no...@so...> - 2009-06-07 12:12:04
|
Patches item #2782397, was opened at 2009-04-27 21:44 Message generated for change (Comment added) made by paradoxoff You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=315494&aid=2782397&group_id=15494 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Peter Kolb (paradoxoff) Assigned to: Nobody/Anonymous (nobody) Summary: FastXYShapeRenderer Initial Comment: Inspired by the SamplingXYLineRenderer in 1.0.13, I wanted to create an efficient renderer that is doing the rendering in form of shapes. That renderer should be useful for datasets with a large (> 100K) number of items. Various approaches how these datasets could be renderer have been discussed in the forum. One of these ideas is the basis for the present renderer: if several identical shapes are drawn at the same pixel, only one shape will be visible. The others do not need to be rendered. Previous approaches have used the old way of rendering one item at a time and skipped shapes that would be rendered on top of another. However, in order to get a chart that is as close to a normal XYShapeRenderer as possible, the shapes in the background, that correspond to an item with a low itemIndex, would need to be omitted! In order to achieve that, the present renderer first goes through the items in reverse order. For each item, the position is calculated, and if that position is already occupied, the item is not rendered. This requires that the old drawing item by item convention was bypassed, and that all items of an entire series are analyzed and rendered in a single pass, i. e. the series is rendered at the first opportunity, and subsequent calls to drawItem return immediately. The name of the renderer might be misleading: it does not XYShapeRenderer and cannot handle XYZDatasets. ---------------------------------------------------------------------- >Comment By: Peter Kolb (paradoxoff) Date: 2009-06-07 14:12 Message: New renderer with extended possibilities. The new renderer combines the features of the FastXYShapeRenderer and the SamplingXYLineRenderer. It also uses the useFillPaint, useOutlinePaint and drawOutlines flags of the XYLineAndShapeRenderer and should thus produce an output that is indistinguishable from that of an XYLineAndShapeRenderer. The new renderer draws entire series in a single pass, regardless of whether shapes or lines or both are drawn. The code for drawing the series lines uses the basic idea of the SamplingXYLineRenderer with a few modifications (and including the most recent bugfixes): - the variables to track the lowY, highY, closeY and lastX values have been moved from the state to the renderer - the SamplingXYLineRenderer first transform the data values into java2D values and then decides what to do (modify the intervalPath, the seriesPath, or just track some values). The new renderer decides what to do based on the data values, and transforms the data values to java2D values only if this is required. - the new renderer does not only care about the "goodness" of a point but also about the visibility, and will not draw a line that connects two points that are outside the axes ranges. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=315494&aid=2782397&group_id=15494 |