Class LineTracer
- java.lang.Object
-
- uk.ac.starlink.ttools.plot2.layer.LineTracer
-
public class LineTracer extends java.lang.Object
Draws lines composed of a sequence of points, submitted one at a time. To use it make multiple calls ofaddVertex
, followed by a call toflush()
.Sub-sequences of the point sequence are aggregated in supplied work arrays and plotted using
Graphics2D.draw(Shape)
. This is superior to the more obvious strategy of callingGraphics.drawLine
for every pair of points. It is probably faster, it can work with non-integer coordinates, and it is necessary to get the dashing right for dashed strokes, otherwise the dash starts anew for each edge. This class does some other useful things like avoid attempts to plot lines which are extremely long or which are known to be outside the clip.- Since:
- 12 Jun 2013
- Author:
- Mark Taylor
-
-
Constructor Summary
Constructors Constructor Description LineTracer(java.awt.Graphics g, java.awt.Rectangle bounds, java.awt.Color color, java.awt.Stroke stroke, boolean antialias, int nwork, boolean isPixel)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addVertex(double dx, double dy)
Adds a point to the sequence to be plotted.void
flush()
Ensures that all points have been drawn.
-
-
-
Constructor Detail
-
LineTracer
public LineTracer(java.awt.Graphics g, java.awt.Rectangle bounds, java.awt.Color color, java.awt.Stroke stroke, boolean antialias, int nwork, boolean isPixel)
Constructor. Thenwork
parameter determines the number of points aggregated into a single plotting call. There may be visual anomalies everynwork
points, so it should not be too small, but arrays of this size are allocated, so it should not be too large either.- Parameters:
g
- the base graphics contextbounds
- bounds beyond which lines should not be drawncolor
- line colourstroke
- line strokeantialias
- whether lines are to be antialiasednwork
- workspace array sizeisPixel
- if true, the graphics context is considered to be pixellised, allowing some optimisations to be made that should not be visible
-
-
Method Detail
-
addVertex
public void addVertex(double dx, double dy)
Adds a point to the sequence to be plotted.- Parameters:
dx
- graphics X coordinatedy
- graphics Y coordinate
-
flush
public void flush()
Ensures that all points have been drawn. Since points are plotted in bursts for reasons of aesthetics and efficiency, this must be called after alladdVertex(double, double)
calls to ensure that the drawing has actually been done.
-
-