Interface ILcdGXYLabelingAlgorithm

All Superinterfaces:
Cloneable, ILcdCloneable
All Known Implementing Classes:
ALcdGXYDiscretePlacementsLabelingAlgorithm, ALcdGXYDiscretePlacementsLabelingAlgorithmWrapper, TLcdAIXM51LabelingAlgorithm, TLcdGXYCompositeDiscretePlacementsLabelingAlgorithm, TLcdGXYCompositeLabelingAlgorithm, TLcdGXYContinuousLabelingAlgorithm, TLcdGXYCurvedPathLabelingAlgorithm, TLcdGXYDependantLabelsRemovalWrapper, TLcdGXYInPathLabelingAlgorithm, TLcdGXYLabelPainterLocationLabelingAlgorithm, TLcdGXYLocationListLabelingAlgorithm, TLcdGXYOnPathLabelingAlgorithm, TLcdGXYSinglePlacementLabelingAlgorithm, TLcdSLDLabelingAlgorithm

public interface ILcdGXYLabelingAlgorithm extends ILcdCloneable
This interface can be used to compute placements for labels. It consists of two methods, one to collect labeling information, and one to actually compute the label placements.

Collect Labeling Info

The first method, collectLabelInfo, gets a list of TLcdLabelIdentifiers as input. These represent the labels that need to be placed. It returns a TLcdCollectedLabelInfoList object, which contains information for each of these labels. So this method basically converts the list of TLcdLabelIdentifiers to a TLcdCollectedLabelInfoList, using it to store all information needed to perform the label placing itself. This is shown in the following illustration:

collectLabelInfo

In order to make asynchronous decluttering work for an specific labeling algorithm, all information calculated using the layer and its contents (ILcdGXYPainter, ILcdGXYLabelPainter, ...) should be retrieved using collectLabelInfo.

Compute Label Placements

The second method, computeLabelPlacements, gets the result of collectLabelInfo method as input and returns a list of TLcdLabelPlacements, each pointing to its label. This is illustrated in the following figure.

computeLabelPlacements

The given TLcdCollectedLabelInfoList should always be an object created or returned by collectLabelInfo.

The returned List of TLcdLabelPlacements contains label placements that are either visible or invisible. When a placement is present in the list, it means that the location should be stored. When a placement in the list is marked as visible, it means that its location should be marked as to-be-painted.

Since:
10.1
  • Method Details

    • collectLabelInfo

      TLcdCollectedLabelInfoList collectLabelInfo(List<TLcdLabelIdentifier> aLabelsToCollect, Graphics aGraphics, ILcdGXYView aGXYView)
      This method returns a TLcdCollectedLabelInfoList object based on the given list of TLcdLabelIdentifiers. The returned TLcdCollectedLabelInfoList should contain a TLcdCollectedLabelInfo object for each label that should be placed.

      Each TLcdCollectedLabelInfo should also contain all information needed by computeLabelPlacements to place the labels. In order to enable correct asynchronous label placing, all calls to the layer and the (label) painters should be done in this method. The results should then be stored in the info objects.

      It is possible that the returned TLcdCollectedLabelInfoList doesn't contain a TLcdCollectedLabelInfo object for every given TLcdLabelIdentifier. In that case the missing labels are not placed.

      Parameters:
      aLabelsToCollect - the labels for which a TLcdCollectedLabelInfoList should be created.
      aGraphics - the graphics.
      aGXYView - the view.
      Returns:
      a TLcdCollectedLabelInfoList which contains all the information needed to place the labels.
    • computeLabelPlacements

      List<TLcdLabelPlacement> computeLabelPlacements(TLcdCollectedLabelInfoList aLabelInfoList, ILcdLabelConflictChecker aLabelConflictChecker, ILcdGXYView aView)
      This method computes a list of TLcdLabelPlacements using the given TLcdCollectedLabelInfoList. The returned label placements should contain a valid TLcdLabelLocation and label bounds. They should also point to their corresponding TLcdCollectedLabelInfo, which in turn should point to its corresponding TLcdCollectedLabeledObjectInfo.

      The given TLcdCollectedLabelInfoList should always be an object created or returned by collectLabelInfo.

      The returned List of TLcdLabelPlacements contains label placements that are either visible or invisible. When a placement is present in the list, it means that the location should be stored. When a placement in the list is marked as visible, it means that its location should be marked as to-be-painted.

      The labels should by preference be placed in the order in which the labels are returned by TLcdCollectedLabelInfoList.getLabels().

      Parameters:
      aLabelInfoList - the info object that contains all information needed to place the labels.
      aLabelConflictChecker - the bounds conflict checker that can be used to detect conflicts between labels.
      aView - the view.
      Returns:
      a list of labels to be rendered.