Interface ITrace2D

All Superinterfaces:
Comparable<ITrace2D>, EventListener, PropertyChangeListener, Serializable
All Known Implementing Classes:
ATrace2D, Trace2DArithmeticMean, Trace2DArithmeticMeanX, Trace2DArithmeticMeanY, Trace2DAxisSwap, Trace2DBijective, Trace2DDebugger, Trace2DLtd, Trace2DLtdReplacing, Trace2DLtdSorted, Trace2DReplacing, Trace2DSimple, Trace2DSorted

public interface ITrace2D extends PropertyChangeListener, Comparable<ITrace2D>, Serializable
An interface used by Chart2D. ITrace2D contains the values to display, the color for displaying and a suitable label. It may be seen as a trace of the Chart2D that displays it.
Implementations may be optimized for different use- cases:
RingBuffers for fast changing data to keep the amount of trace points and consumption of memory constant, internal Lists for allowing the sorting the internal TracePoint2D- instances or Arrays for unordered Data (in the order of adding) for fast performance. Even an ITrace2D constructed by a "function- Object" may be thinkable.

There are various constraints for Traces:
- ordered by x-values
- ordered by the order of addPoint- invocation (control form outside)
- unique, single x- values
- limitation of tracepoints
- time- critical (fast- changing tracepoints)

Therefore there are various ITrace2D- implementations. Read their description to find the one you need. Some may not have been written yet.

Comparable should be implemented by using the internal property zIndex (see getZIndex(), setZIndex(Integer)).

Property Change events

The following PropertyChangeEvent may be fired to PropertyChangeListener instances that register themselves with addPropertyChangeListener(String, PropertyChangeListener). invalid input: '<'table * border="0"> getPropertyName() getSource() getOldValue() getNewValue() PROPERTY_ZINDEX ITrace2D that changed Number, the old value Number, the new value PROPERTY_MAX_X ITrace2D that changed Double, the old value Double, the new value PROPERTY_MIN_X ITrace2D that changed Double, the old value Double, the new value PROPERTY_MAX_Y ITrace2D that changed Double, the old value Double, the new value PROPERTY_MIN_Y ITrace2D that changed Double, the old value Double, the new value PROPERTY_TRACEPOINT ITrace2D that changed TracePoint2D, the instance that was removed null, indication that an instance was removed PROPERTY_TRACEPOINT ITrace2D that changed null, indication that a value was added TracePoint2D, the new instance that was added, identifying that an instance was removed PROPERTY_VISIBLE ITrace2D that changed Boolean, the old state. Boolean, the new state. PROPERTY_PAINTERS ITrace2D that changed null, indicating that a painter was added. ITracePainter, the new painter. PROPERTY_PAINTERS ITrace2D that changed ITracePainter, the old painter. null, indicating that a painter was removed. PROPERTY_POINT_HIGHLIGHTERS_CHANGED ITrace2D that changed null, indicating that a point highlighter was added. IPointPainter, the new highlighter. PROPERTY_POINT_HIGHLIGHTERS_CHANGED ITrace2D that changed IPointPainter, the old highlighter. null, indicating that a point highlighter was removed. PROPERTY_PAINTERS ITrace2D that changed IPointPainter, the old highlighter. null, indicating that a highlighter was removed. PROPERTY_STROKE ITrace2D that changed Stroke, the old stroke. Stroke, the new stroke. PROPERTY_COLOR ITrace2D that changed Color, the new color. Color, the new color. PROPERTY_ERRORBARPOLICY ITrace2D that changed null, indicating that an error bar policy was added. IErrorBarPolicy, the new error bar policy. PROPERTY_ERRORBARPOLICY ITrace2D that changed IErrorBarPolicy, the old error bar policy. null, indicating that an error bar policy was removed. PROPERTY_ERRORBARPOLICY_CONFIGURATION ITrace2D that notifies the change of the configured error bar policy. null IErrorBarPolicy, the instance with the configuration change. PROPERTY_POINT_CHANGED ITrace2D that notifies the change of the contained trace point. null because it would be too much overhead to store the old point in a additional instance as the original is modified in Point2D.setLocation(java.awt.geom.Point2D). TracePoint2D the point whose location was modified. PROPERTY_NAME ITrace2D that notifies the change. String, the old value of getName() String, the new value of getName() PROPERTY_PHYSICALUNITS ITrace2D that notifies the change. String, the old value of getPhysicalUnits() String, the new value of getPhysicalUnits() PROPERTY_LABEL (triggered by setName(String) and setPhysicalUnits(String, String)) ITrace2D that notifies the change. String, the old value of getLabel() String, the new value of getLabel()

Version:
$Revision: 1.41 $
Author:
Achim Westermann
  • Field Details

  • Method Details

    • addComputingTrace

      void addComputingTrace(ITrace2D trace)
      Adds a trace that "should" compute values from the points added via addPoint(ITracePoint2D) .

      The given trace will be informed in case an add operation on this trace succeeds via addPoint(ITracePoint2D).

      Parameters:
      trace - the trace that will calculate it's points from the added points of this trace.
    • addErrorBarPolicy

      boolean addErrorBarPolicy(IErrorBarPolicy<?> errorBarPolicy)
      Adds the given error bar policy to the internal set of error bar policies.

      It will be the last error bar policy to render (most forward on screen).

      Parameters:
      errorBarPolicy - the error bar policy to add for rendering this trace's error bars.
      Returns:
      true if the painter was added (same instance was not contained before).
    • addPoint

      boolean addPoint(double x, double y)
      Adds a trace point to the internal data.

      Warning:
      Do not call this method before this trace has been added to a chart or you will not succeed as the chart is needed to get the proper Chart2D.getTracePointProvider().

      Parameters:
      x - the x-value of the point to add.
      y - the y-value of the point to add.
      Returns:
      true if the operation was successful, false else.
      See Also:
    • addPoint

      boolean addPoint(ITracePoint2D p)
      Adds the given TracePoint2D to the internal data.

      Try to pass instances of TracePoint2D to this instance instead of invoking addPoint(double, double) to increase performance. Else the given point has to be copied into such an instance from the other method and delegated to this method.

      Implementations decide whether the point will be accepted or not. So they have to update the internal properties minX, maxX,maxY and minY and also care about firing property change events for those properties by method PropertyChangeSupport.firePropertyChange(java.beans.PropertyChangeEvent).

      Parameters:
      p - the point to add.
      Returns:
      true if the operation was successful, false else.
    • addPointHighlighter

      boolean addPointHighlighter(IPointPainter<?> highlighter)
      Adds the given point painter to the internal set of point highlighters.

      It will be the last point painter to paint highlighting if highlighting is active.

      Parameters:
      highlighter - the highlighter to add for highlighting this trace.
      Returns:
      true if the highlighter was added (class of instance not contained before).
    • addPropertyChangeListener

      void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
      Registers a property change listener that will be informed about changes of the property identified by the given propertyName.

      Parameters:
      propertyName - the name of the property the listener is interested in
      listener - a listener that will only be informed if the property identified by the argument propertyName changes
    • addTracePainter

      boolean addTracePainter(ITracePainter<?> painter)
      Adds the given trace painter to the internal set of trace painters.

      It will be the last painter to paint (most forward).

      Parameters:
      painter - the painter to add for rendering this trace.
      Returns:
      true if the painter was added (class of instance not contained before).
    • containsTracePainter

      boolean containsTracePainter(ITracePainter<?> painter)
      Returns true if the given painter is contained in this compound painter.

      Parameters:
      painter - the painter to check whether it is contained.
      Returns:
      true if the given painter is contained in this compound painter.
    • firePointChanged

      void firePointChanged(ITracePoint2D changed, int state)
      Method to trigger by TracePoint2D.setLocation(double, double) , addPoint(ITracePoint2D) or removePoint(ITracePoint2D).

      Bound checks are performed and property change events for the properties PROPERTY_MAX_X, PROPERTY_MIN_X, PROPERTY_MAX_Y and PROPERTY_MIN_Y are fired if the add bounds have changed due to the modification of the point.

      Parameters:
      changed - the point that has been changed which may be a newly added point (from addPoint(ITracePoint2D), a removed one or a modified one.
      state - one of {ITracePoint2D.STATE_ADDED, ITracePoint2D.STATE_CHANGED, ITracePoint2D.STATE_REMOVED to inform about the type of change.
    • getColor

      Color getColor()
      Because the color is data common to a trace of a Chart2D it is stored here.

      On the other hand only the corresponding Chart2D may detect the same color chosen for different IChart2D instances to be displayed. Therefore it is allowed to return null. This is a message to the Chart2D to leave it the choice of the color. Then the Chart2D will chose a color not owned by another ITrace2D instance managed and assign it to the null- returning instance.

      The Chart2D will often call this method. So try to cache the value in implementation and only check on modifications of TracePoint instances or on add- invocations for changes.

      Returns:
      The chosen java.awt.Color or null if the decision for the color should be made by the corresponding Chart2D.
    • getErrorBarPolicies

      Set<IErrorBarPolicy<?>> getErrorBarPolicies()
      Returns the Set<IErrorBarPolicy> that will be used to render error bars for this trace.

      Returns:
      the Set<IErrorBarPolicy> that will be used to render error bars for this trace.
    • getHasErrorBars

      boolean getHasErrorBars()
      Returns true if this trace has error bars configured.

      If this returns false, no error bars will be painted for this trace.

      Returns:
      true if this trace has error bars configured.
    • getLabel

      String getLabel()
      Callback method for the Chart2D that returns a String describing the label of the ITrace2D that will be displayed below the drawing area of the Chart2D.

      This method should be implemented and finalized ASAP in the inheritance tree and rely on the property name and physicalUnits.

      Returns:
      a String describing the Axis being accessed.
    • getMaxSize

      int getMaxSize()

      Returns the maximum amount of TracePoint2D instances that may be added. For implementations that limit the maximum amount this is a reasonable amount. Non-limiting implementations should return Integer.MAX_VALUE. This allows to detect the unlimitedness. Of course no implementation could store that amount of points.

      Returns:
      The maximum amount of TracePoint2D instances that may be added.
    • getMaxX

      double getMaxX()
      Returns the maximum value to be displayed on the x- axis of the Chart2D. Implementations should be synchronized for multithreaded use. No exception is thrown. In case of empty data (no tracepoints) 0 should be returned, to let the Chart2D know.

      The Chart2D will often call this method. So try to cache the value in implementation and only check on modifications of TracePoint instances or on add- invocations for changes.

      Returns:
      the maximum value of the internal data for the x- dimension.
    • getMaxY

      double getMaxY()
      Returns the maximum value to be displayed on the y- axis of the Chart2D. Implementations should be synchronized for multithreaded use. No exception is thrown. In case of empty data (no tracepoints) 0 should be returned. (watch division with zero).

      Returns:
      the maximum value of the internal data for the y- dimension.
    • getMinX

      double getMinX()
      Returns the minimum value to be displayed on the x- axis of the Chart2D.

      Implementations should be synchronized for multithreaded use. No exception is thrown. In case of empty data (no tracepoints) 0 should be returned. (watch division with zero).

      The Chart2D will often call this method. So try to cache the value in implementation and only check on modifications of TracePoint instances or on add- invocations for changes.

      Returns:
      the minimum value of the internal data for the x- dimension.
    • getMinY

      double getMinY()
      Returns the minimum value to be displayed on the y- axis of the Chart2D.

      Implementations should be synchronized for multithreaded use. No exception is thrown. In case of empty data (no tracepoints) 0 should be returned. (watch division with zero).

      The Chart2D will often call this method. So try to cache the value in implementation and only check on modifications of TracePoint instances or on add- invocations for changes.

      Returns:
      the minimum value of the internal data for the y- dimension.
    • getName

      String getName()
      Returns the name of this trace.

      Returns:
      the name of this trace.
      See Also:
    • getNearestPointEuclid

      ITrace2D.DistancePoint getNearestPointEuclid(double x, double y)
      Returns the nearest point to the given normalized value coordinates of this trace in Euclid distance.

      Please note that the arguments must be normalized value coordinates like provided by a TracePoint2D.getScaledX() or the division of a pixel coordinate by the total pixel range of the chart.

      Using the Manhattan distance is much faster than Euclid distance as it only includes basic addition an absolute value for computation per point (vs. square root, addition and quadrature for Euclid distance). However the euclid distance spans a circle for the nearest points which is visually more normal for end users than the Manhattan distance which forms a rhombus and reaches far distances in only one dimension.

      Parameters:
      x - the x value as a normalized value between 0 and 1.0.
      y - the x value as a normalized value between 0 and 1.0.
      Returns:
      the nearest point to the given normalized value coordinates of this trace in Euclid distance.
    • getNearestPointManhattan

      ITrace2D.DistancePoint getNearestPointManhattan(double x, double y)
      Returns the nearest point to the given normalized value coordinates of this trace in Manhattan distance.

      Please note that the arguments must be normalized value coordinates like provided by a TracePoint2D.getScaledX() or the division of a pixel coordinate by the total pixel range of the chart.

      Using the Manhattan distance is much faster than Euclid distance as it only includes basic addition an absolute value for computation per point (vs. square root, addition and quadrature for Euclid distance).

      Parameters:
      x - the x value as a normalized value between 0 and 1.0.
      y - the x value as a normalized value between 0 and 1.0.
      Returns:
      the nearest point to the given normalized value coordinates of this trace in Manhattan distance.
    • getPhysicalUnits

      String getPhysicalUnits()
      Returns the concatenation [x: "getPhysicalUnitsX()", y: " getPhysicalUnitsY()"].

      Returns:
      the concatenation [x: "getPhysicalUnitsX()", y: " getPhysicalUnitsY()"].
      See Also:
    • getPhysicalUnitsX

      String getPhysicalUnitsX()
      Returns the physical unit string value for the x dimension.

      Returns:
      the physical unit string value for the x dimension.
      See Also:
    • getPhysicalUnitsY

      String getPhysicalUnitsY()
      Returns the physical unit string value for the y dimension.

      Returns:
      the physical unit string value for the y dimension.
      See Also:
    • getPointHighlighters

      Set<IPointPainter<?>> getPointHighlighters()
      Returns the Set<IPointPainter> that may be used to highlight points of this trace.

      This is used by the point highlighting feature: Chart2D.enablePointHighlighting(boolean)

      Returns:
      the Set<IPointPainter> that may be used to highlight points.
    • getPropertyChangeListeners

      PropertyChangeListener[] getPropertyChangeListeners(String property)
      Returns all property change listeners for the given property.

      Parameters:
      property - one of the constants with the PROPERTY_ prefix defined in this class or subclasses.
      Returns:
      the property change listeners for the given property.
    • getRenderer

      Chart2D getRenderer()
      Returns:
      Returns the renderer.
    • getSize

      int getSize()
      Returns the amount of TracePoint2D instances currently contained.

      Returns:
      The amount of TracePoint2D instances currently contained.
    • getStroke

      Stroke getStroke()
      Returns the Stroke that is used to render this instance.

      Returns:
      the Stroke that is used to render this instance.
      See Also:
    • getTracePainters

      Set<ITracePainter<?>> getTracePainters()
      Returns the Set<ITracePainter> that will be used to paint this trace.

      The original set should be returned by contract to allow adding painters "silently" (vs. using addTracePainter(ITracePainter)).

      Returns:
      the Set<ITracePainter> that will be used to paint this trace.
    • getZIndex

      Integer getZIndex()
      The z-index defines the order in which this instance will be painted.

      A higher value will bring it more "to the front".

      Returns:
      the z-index that will define the order in which this instance will be painted.
    • isEmpty

      boolean isEmpty()
      Returns false if internal TracePoint2D instances are contained or true if not.

      Returns:
      false if internal TracePoint2D instances are contained or true if not.
    • isVisible

      boolean isVisible()
      Returns true if this instance should be rendered.

      Returns:
      true if this instance should be rendered.
    • iterator

      Iterator<ITracePoint2D> iterator()
      Returns an Iterator over the internal TracePoint2D instances.

      Implementations should be synchronized. This method is meant to allow modifications of the intenal TracePoint2D instances, so the original points should be returned.

      There is no guarantee that changes made to the contained tracepoints will be reflected in the display immediately. The order the iterator returns the TracePoint2D instances decides how the Chart2D will paint the trace.

      Returns:
      an Iterator over the internal TracePoint2D instances.
    • removeAllPointHighlighters

      Set<IPointPainter<?>> removeAllPointHighlighters()
      Clears all internal point highlighters used.

      Returns the Set<IPointPainter> that was used to highlight points.

      This is used by the point highlighting feature: Chart2D.enablePointHighlighting(boolean)

      Returns:
      the Set<IPointPainter> that was be used to highlight points.
    • removeAllPoints

      void removeAllPoints()
      Removes all internal TracePoint2D.isEmpty() will return true afterwards.

    • removeComputingTrace

      boolean removeComputingTrace(ITrace2D trace)
      Remove a trace that "should" compute values from the points added via addPoint(ITracePoint2D).

      Parameters:
      trace - the trace that will calculate it's points from the added points of this trace.
      Returns:
      true if the given trace was removed (recognized by the means of Object.equals(Object)).
    • removeErrorBarPolicy

      boolean removeErrorBarPolicy(IErrorBarPolicy<?> errorBarPolicy)
      Removes the given error bar policy from the internal set of error bar policies.

      Parameters:
      errorBarPolicy - the error bar policy to remove.
      Returns:
      true if the painter was removed (same instance contained before).
    • removePoint

      boolean removePoint(ITracePoint2D point)
      Removes the given point from this trace.

      Parameters:
      point - the point to remove.
      Returns:
      true if the remove opertation was successful, false else.
    • removePointHighlighter

      boolean removePointHighlighter(IPointPainter<?> highlighter)
      Removes the given point highlighter, if it's class is contained.

      Parameters:
      highlighter - the highlighter to remove.
      Returns:
      true if a point highlighter of the class of the given argument was removed.
    • removePropertyChangeListener

      void removePropertyChangeListener(PropertyChangeListener listener)
      Unregisters a property change listener that has been registered for listening on all properties.

      Parameters:
      listener - a listener that will only be informed if the property identified by the argument propertyName changes
    • removePropertyChangeListener

      void removePropertyChangeListener(String property, PropertyChangeListener listener)
      Removes a property change listener for listening on the given property.

      Parameters:
      property - one of the constants with the PROPERTY_ prefix defined in this class or subclasses.
      listener - the listener for this property change.
    • removeTracePainter

      boolean removeTracePainter(ITracePainter<?> painter)
      Removes the given trace painter, if it's class is contained and if more painters are remaining.

      Parameters:
      painter - the trace painter to remove.
      Returns:
      true if a trace painter of the class of the given argument was removed.
    • setColor

      void setColor(Color color)
      Set a java.awt.Color for this trace.

      Parameters:
      color - the Color to set.
    • setErrorBarPolicy

      Set<IErrorBarPolicy<?>> setErrorBarPolicy(IErrorBarPolicy<?> errorBarPolicy)
      Replaces all internal error bar policies by the new one.

      Parameters:
      errorBarPolicy - the new sole painter to use.
      Returns:
      the Set<IErrorBarPolicy> that was used before.
    • setName

      void setName(String name)
      Assingns a specific name to the ITrace2D which will be displayed by the Chart2D.

      Parameters:
      name - the name for this trace.
    • setPhysicalUnits

      void setPhysicalUnits(String xunit, String yunit)
      Assigns a specific String representing the physical unit to the ITrace2D (e.g. Volt, Ohm, lux, ...) which will be displayed by the Chart2D

      Parameters:
      xunit - the physical unit for the x axis.
      yunit - the physical unit for the y axis.
    • setPointHighlighter

      Set<IPointPainter<?>> setPointHighlighter(IPointPainter<?> highlighter)
      Replaces all internal point highlighters by the new one.

      Parameters:
      highlighter - the new sole highlighter to use.
      Returns:
      the Set<IPointPainter> that was used before or null if nothing changed.
    • setRenderer

      void setRenderer(Chart2D renderer)
      This is a callback from Chart2D.addTrace(ITrace2D) and must not be invoked from elsewhere (needed for synchronization).

      Not the best design to put this to an interface, but Char2D should handle this interface only.

      Parameters:
      renderer - The renderer to set.
    • setStroke

      void setStroke(Stroke stroke)
      Allows to specify the rendering of the ITrace2D. This Stroke will be assigned to the Graphics2D by the rendering Chart2D when painting this instance.

      Parameters:
      stroke - the stroke to use for painting this trace.
    • setTracePainter

      Set<ITracePainter<?>> setTracePainter(ITracePainter<?> painter)
      Replaces all internal trace painters by the new one.

      Parameters:
      painter - the new sole painter to use.
      Returns:
      the Set<ITracePainter> that was used before.
    • setVisible

      void setVisible(boolean visible)
      Set the visibility. If argument is false, this instance will not be rendered by a Chart2D.

      Parameters:
      visible - true if this trace should be painted, false else.
    • setZIndex

      void setZIndex(Integer zIndex)
      Sets the internal z-index property. This decides the order in which different traces within the same Chart2D are painted.

      The higher the given value is the more this trace will be brought to front.

      The value must not be lower than Z_INDEX_MIN(0) and higher than ZINDEX_MAX(100).

      This might not be tested for increased performance but ignoring these bounds may result in wrong ordering of display.

      Parameters:
      zIndex - the z index of this trace - the lower the value the more in front the trace will appear amongst other traces in the same chart.
      See Also:
    • showsErrorBars

      boolean showsErrorBars()
      Tests whether error bars are painted by this trace.

      Returns true if

      Returns:
      true if this trace renders error bars.
    • showsNegativeXErrorBars

      boolean showsNegativeXErrorBars()
      Tests whether error bars in negative x direction are painted by this trace.

      Returns true if

      Returns:
      true if this trace renders error bars in negative x direction.
    • showsNegativeYErrorBars

      boolean showsNegativeYErrorBars()
      Tests whether error bars in negative y direction are painted by this trace.

      Returns true if

      Returns:
      true if this trace renders error bars in negative y direction.
    • showsPositiveXErrorBars

      boolean showsPositiveXErrorBars()
      Tests whether error bars in positive x direction are painted by this trace.

      Returns true if

      Returns:
      true if this trace renders error bars in positive x direction.
    • showsPositiveYErrorBars

      boolean showsPositiveYErrorBars()
      Tests whether error bars in positive y direction are painted by this trace.

      Returns true if

      Returns:
      true if this trace renders error bars in positive y direction.