2024.0

2024.0.04

Bug fixReal-time Engine

LCD-13487
TLspContinuousLabelingAlgorithm didn't handle edited labels correctly anymore. Such labels were, for example, not correctly moved when colliding with one of the view's edges, or with another label. This was a regression that was introduced in the first LuciadLightspeed 2022.1 release.

2024.0

New featureReal-time Engine

TLspRadarVideoLayerBuilder now has the ability to work with radar feeds whose angular or radial resolution are variable over time. This requires the user to manually specify the resolution of the visualization, which is then effectively decoupled from that of the data. The new method displayResolution() on the layer builder is used to enable this behavior. If called, the radar video layer will be fully robust against all variations in the resolution of the incoming data.

2022.0

2022.0.10

Bug fixReal-time Engine

LCD-12541
TLspRadarVideoLayerBuilder: the afterglow duration set on TLspRadarVideoStyle wasn't applied correctly when the intensity was not set to 1, blips would disappear to fast.

2022.0.06

Bug fixReal-time Engine

LCD-12510
When a Lightspeed view is configured on a TLcdSimulator, the simulator now uses that view's ILspView#invokeLater for updating the simulator model. Previously, it would always schedule model changes on the AWT Thread, which was not compatible with TLspFXView.

2021.1

2021.1.15

Bug fixReal-time Engine

LCD-12331
TLcdGXYContinuousLabelingAlgorithm didn't always take selection into account. For labels with a selected size that differs from their non-selected size, this could lead to incorrect decluttering results.

2021.0

2021.0.07

Bug fixReal-time Engine

LCD-11994
TLspRadarVideoLayerBuilder: a NegativeArraySizeException could sometimes occur during visualization of a radar.

2018.0

2018.0.09

Bug fixReal-time Engine

LCD-10141
Fixed a quadratic complexity problem in TLcdGXYContinuousLabelingAlgorithm that could cause performance problems when working with 100s/1000s of labels.

2018.0

ImprovementReal-time Engine

TLspRadarVideoLayerBuildernow paints a sweep line, radar grid and range style by default. Before, it only painted the radar video content.

The styler of the built layer implements ILspCustomizableStyler, so you can disable and change the style for this new content using the methods of that interface. Consult the javadoc for detailed information.

ImprovementReal-time Engine

The new TLcdRadar class allows you to visualize radar video data from custom data feeds. See its addRadarSweep method to find out how to pass radar video data into the radar object. The samples.realtime.lightspeed.radarvideo sample demonstrates how to use these classes and how to visualize the data using TLspRadarVideoLayerBuilder.

ImprovementReal-time Engine

LCD-8729
TLspRadarVideoLayerBuilder now offers better support for radar video data in high resolution. Previously, the data was sampled at a smaller resolution before it was shown on the screen. Now the full resolution is preserved.

Bug fixReal-time Engine

LCD-9487
TLspRadarVideoLayerBuilder: a radar layer was only repainted in response to a model change event or a view change. That could result in an unsmooth fade-out of the blips. Now the radar will repaint itself automatically, resulting in a smooth fade-out of the blips.

2017.1

2017.1.03

Bug fixReal-time Engine

LCD-9666
Using military symbols in combination with the realtime.gxy.clusterLabeling sample didn't work correctly.

Bug fixReal-time Engine

LCD-9632
TLcdTimeFilteredSimulatorModel: setting the begin- and end-date without setting a ILcdSimulatorModel to filter now works again.

2017.0

2017.0.01

Bug fixReal-time Engine

LCD-9152
TLspRadarVideoLayerBuilder: radar layers removed from the view did not release all retained memory.

2017.0

Bug fixReal-time Engine

LCD-8729
TLspRadarVideoLayerBuilder can now handle radars which have an angular and/or radial resolution that is higher than the maximum supported texture resolution of the GPU. In case the resolution of the radar is too high, it will be visualized at a reduced resolution.

2016.1

2016.1.05

ImprovementReal-time Engine

LCD-8482
Changing the system clock during TLcdSimulator playback no longer pauses the simulation.

2016.1

ImprovementReal-time Engine

The "Track Simulator" sample was adapted to use a time slider based on a Lightspeed non-georeferenced view.
See TimeSlider javadoc in the samples.lightspeed.timeview package for more details.

Bug fixReal-time Engine

ALcdTimeIndexedSimulatorModel: removeTracks now releases write locks on its track model before firing the model events. This is required for multithreaded applications, as documented in the threading chapter in the LuciadLightspeed developer's guide.

Bug fixReal-time Engine

LCD-8168
ALcdTimeIndexedSimulatorModel: no longer throws a NullPointerException when you initialize it with an empty list of tracks, and then add tracks using addTracks

2016.0

2016.0.11

ImprovementReal-time Engine

LCD-8000
A new "afterglow color" property was introduced in TLspRadarVideoStyle. This color is applied to radar blips that were not confirmed by the most recent pass of the radar but which are still visible due to afterglow. This allows the user to visually distinguish current blips from stale ones even when using long afterglow durations.

2015.1

2015.1.16

Bug fixReal-time Engine

LCD-7336
Continuous labeling: labels could move on top of the anchor point (e.g. a track) when clamping both the distance and the angle of the label.

2015.1.01

ImprovementReal-time Engine

LCD-6853
TLspRadarVideoLayerBuilder can now handle input data where the cell duration is not constant across all records, provided that the longer cell durations are an exact multiple of the shortest duration encountered in the data feed.

2015.0

2015.0.11

Bug fixReal-time Engine

LCD-6579
Fixed an issue with TLspRadarVideoLayerBuilder where radar feeds could exhibit single-cell gaps in the angular direction, due to small fluctuations in the azimuth values of the input data.

2015.0.06

ImprovementReal-time Engine

LCD-6597
TLspContinuousLabelingAlgorithm now doesn't make labels for objects closely outside the view border invisible.

2015.0.03

ImprovementReal-time Engine

Radar video layers now support antialiasing of the video feed. This reduces "shimmering" artifacts when displaying high-frequency data while zoomed out. Antialiasing is disabled by default, but can be configured by a quality hint which was added to TLspRadarVideoStyle.

Bug fixReal-time Engine

LCD-6482
Plot layers did not clean up all their model listeners. As a result some of the layer's memory could not be released as long as you reference the plot model.

Bug fixReal-time Engine

LCD-5930
Plot layers did not query the stylers again after the model has changed.

2015.0.01

Bug fixReal-time Engine

Radar video layers were made more robust in their handling of missing or out-of-order data records.

2014.1

2014.1.07

ImprovementReal-time Engine

LCD-6288
TLspRadarVideoStyle now allows configuring the afterglow duration either absolutely (as a duration in seconds) or relative to the radar's rotation speed (as a number of full 360 degree sweeps).

Bug fixReal-time Engine

Fixed erroneous painting of radar video feeds when the blip afterglow time was set to zero.

2014.1

ImprovementReal-time Engine

The new package com.luciad.realtime.lightspeed.radarvideo provides support for the visualization of radar video feeds, e.g. from ASTERIX category 240 data. The main API entry point is TLspRadarVideoLayerBuilder. The package samples.decoder.asterix.lightspeed.radarvideo demonstrates the new functionality.

2014.0

2014.0.01

Bug fixReal-time Engine

LCD-5500
ALcdTimeIndexedSimulatorModel: now indexes the times of the tracks correctly when they are further than 25 days apart in begin- or end-time.

2014.0

Upgrade considerationReal-time Engine

TLspPlotLayerBuilder is now available in the Lightspeed module. Please replace usages of classes in com.luciad.realtime.lightspeed.plots with equivalent classes in com.luciad.view.lightspeed.layer.plots.

The plots sample is also available in the Lightspeed module as "lightspeed.plots".

2013.1

2013.1.37

Bug fixReal-time Engine

LCD-5175
Fixed an issue in plot layers that caused objects to disappear. This happened sometimes when selecting, de-selecting and re-selecting objects.

2013.1.27

ImprovementReal-time Engine

LCD-4997
The realtime.lightspeed.clusterLabeling was added. This sample is the Lightspeed version of the GXY clusterLabeling sample which shows how label clusters can be decluttered dynamically.

2013.1.26

Bug fixReal-time Engine

LCD-5043
In rare cases, TLspContinuousLabelingAlgorithm could throw a NPE when using sticky labels (see ALspLabelLocation#setSticky(boolean)).

2013.1.24

Bug fixReal-time Engine

LCD-4991
Plot layers could in some cases fail to initialize their data structure when they were not in a view.

2013.1.13

Bug fixReal-time Engine

ALcdTimeIndexedSimulatorModel: the init method now takes the appropriate write locks before modifying the given track model.

Bug fixReal-time Engine

LCD-4815
ALcdTimeIndexedSimulatorModel: the write lock on the track model is now unlocked before firing the model changes. This prevents a certain class of dead locks.

Bug fixReal-time Engine

LCD-4804
TLcdTrackModel: the model bounds now also include the height information when the contained elements also contain height.

2013.1.11

Bug fixReal-time Engine

When visualizing data using a plot layer (TLspPlotLayerBuilder) in 3D, the data could be culled sooner than needed.

2013.1.07

ImprovementReal-time Engine

LCD-4696
Label editing is now supported for plot layers. See TLspPlotLayerBuilder#labelEditable() and TLspPlotLayerBuilder#labelEditor().

Bug fixReal-time Engine

LCD-4329
When using the continuous labeling algorithm and configuring parent and child labels, the child labels could push the parent labels away.

2013.0

2013.0.07

Bug fixReal-time Engine

LCD-4030
ALcdTimeIndexedSimulatorModel: fixed exception when you removed the last track with the removeTracks method.

2013.0.01

ImprovementReal-time Engine

LCD-3861
TLcdSimulator: now responds quicker to heavy changes in work load in combination with low frame rates.

Bug fixReal-time Engine

LCD-3927
TLspPlotLayerBuilder: the plot icons could be too small when printing a plot layer on some configurations.

2013.0

ImprovementReal-time Engine

LCD-3711
TLcdSimulator: frame rate is now more stable during playback, reducing jitter.

ImprovementReal-time Engine

The ALcdTimeIndexedSimulatorModel now has support to add and remove tracks after initialization. This allows you to handle certain changes, without having to reinitialize.

2012.1

2012.1.15

Bug fixReal-time Engine

LCD-3183
TLspPlotLayerBuilder: altitude exaggeration did not work when switching from 2D to 3D without changing the world reference.

2012.1.14

Bug fixReal-time Engine

LCD-3678
TLspPlotLayerBuilder: fixed exception that could occur when selecting many plots.

2012.1.13

Bug fixReal-time Engine

LCD-3520
TLspPlotLayerBuilder: plot selection did not work correctly when using a style target provides that does not provide exactly 1 geometry for each domain object.

2012.1.11

Bug fixReal-time Engine

LCD-3575
TLspPlotLayerBuilder: models with bounds whose width or height is zero were not painted.

2012.1.10

Bug fixReal-time Engine

TLspPlotLayerBuilder: fixed a potential memory leak if multiple layers are created using the same styler.

2012.1.08

Bug fixReal-time Engine

LCD-3535
TLspPlotLayerBuilder: the icon property for the layer is now taken into account.

Bug fixReal-time Engine

LCD-3534
Plot layers did not handle style target providers with a reference different from the model reference correctly.

Bug fixReal-time Engine

LCD-3477
Plot layer icons are now also pixel-perfect in a geocentric reference if their scale expression returns 1.

2012.1.06

Bug fixReal-time Engine

LCD-3491
Plot layers could throw errors when using certain combinations of expressions, in particular when using TLcdExpressionFactory.sub().

2012.1.03

Bug fixReal-time Engine

LCD-3414
The style of selected plots was sometimes not updated correctly.

2012.1

ImprovementReal-time Engine

A new, high-performing track visualization layer was added. It can handle large static point datasets. See developer guide or TLspPlotLayerBuilder javadoc for details.

ImprovementReal-time Engine

LCD-2601
TLcdTrackModel: the memory usage of TLcdTrackModel has been lowered.

ImprovementReal-time Engine

LMAP-4013, LCD-8
Various configuration options were added to TLcdGXYContinuousLabelingAlgorithm and TLspContinuousLabelingAlgorithm:
  • Use setClampOnScreenEdges to specify if labels can be partially outside the view.
  • Use setLabelMovementBehavior to specify when labels should be moved.
  • Use setMinDistance to ensure labels are never too close to their object.
  • Use setMaxDistance to ensure labels are never too far from their object.
  • Use setDisallowedAngle to specify where a label can be positioned around its object.
  • Use setPadding to add space between labels.

2012.0

2012.0.17

Bug fixReal-time Engine

LCD-2846
Labels placed using continuous decluttering would sometimes jitter.

2012.0.13

Bug fixReal-time Engine

LCD-2738
TLcdSimulator: the 'playInLoop' property no longer causes exceptions when the simulator model is empty.

2012.0.09

Bug fixReal-time Engine

LCD-2605
TLcdSimulatorModelList: the begin- and end-date are now always in the proper order when the corresponding property change events are fired.

Bug fixReal-time Engine

LCD-2595
TLcdSimulatorModelList: the old and new values of the property change events for the track models are now filled in.

Bug fixReal-time Engine

LCD-2594
TLcdTimeFilteredSimulatorModel: property change events are now fired appropriately with the correct information.

2012.0.06

ImprovementReal-time Engine

LCD-1653
ALcdTimeIndexedSimulatorModel no longer fires change events for empty models.

Bug fixReal-time Engine

LCD-58, LMAP-5777
ALcdTimeIndexedSimulatorModel: the selection of a layer is no longer cleared when making large time jumps.

2012.0

ImprovementReal-time Engine

TLcdSimulator now supports simulations in both GXY and Lightspeed views. For using TLcdSimulator in combination with a Lightspeed view. The following methods were added:
  • get/setLspLayerFactory: For retrieving/setting the Lightspeed layer factory that creates the simulation layers for the Lightspeed view(s)
  • getLspView: For retrieving the Lightspeed views set on the simulator
  • add/removeView: For adding/removing ILcdViews on which the simulator should display the simulation
  • getSimulationLspLayers: For retreiving all simulation layers pertaining to a given Lightspeed view
  • is/setPlayInLoop: For checking/setting whether the simulator should play the simulation in a loop

11.0

11.0

ImprovementReal-time Engine

LMAP-3082
TLcdTrackModel : the method applyOnInteract2DBounds (for example used to paint) now works faster, especially when the number of rows and columns is high.

10.1

10.1.10

Bug fixReal-time Engine

LMAP-5239
TLcdSimulator now always correctly restores the autoUpdate property of the associated views.

Bug fixReal-time Engine

TLcdSimulator : when the simulator model is initialized with a begin date in the past, the simulator will now reset to the start date of the simulator model instead of the end date.

10.1.01

Bug fixReal-time Engine

LMAP-4862
A disabled TLcdSimulatorTimeSlider no longer gets enabled by simply dragging on it with the mouse.

10.0

10.0.05

Bug fixReal-time Engine

LMAP-4355
TLcdTrackModel.contains always returned false.

9.1

9.1.18

Bug fixReal-time Engine

LMAP-4007
TLcdContinuousDeclutteringLabelPainter could throw a NoSuchElementException when using it as a layer label painter.

9.1.16

Bug fixReal-time Engine

LMAP-3983
TLcdTrackModel no longer throws exceptions when it is serialized.

9.1.14

ImprovementReal-time Engine

TLcdContinuousDeclutteringLabelPainter now has a forced painting priority threshold. When the priority of a label is higher than this threshold, it is always drawn., even when it should be dropped because of the max label coverage option.

ImprovementReal-time Engine

TLcdContinuousDeclutteringLabelPainter now can use a label priority provider that can make a distinction between labels with different label and sublabel indices. This is done by passing a ALcdGXYLabelPriorityProvider to TLcdContinuousDeclutteringLabelPainter#setLabelPriorityProvider().

9.1.07

Bug fixReal-time Engine

LMAP-3846
The realtime.offsetIcon sample no longer tries to declutter before the previous declutter operation is finished, preventing several exceptions.

9.1

ImprovementReal-time Engine

TLcdSimulator: when the endDate changes to a later date, the date is no longer updated to the new endDate when it used to be at the old endDate. This applies for the beginDate as well.

ImprovementReal-time Engine

LMAP-3381
TLcdContinuousDeclutteringLabelPainter: now has a new property setMaxLabelCoverage to allow dropping labels when they start to occupy too much of the view's surface.

Bug fixReal-time Engine

TLcdContinuousDeclutteringLabelPainter: no longer throws IndexOutOfBoundsExceptions when multiple obstacle providers are added.

9.0

9.0.02

Bug fixReal-time Engine

LMAP-2746, LMAP-2962
TLcdSimulatorTimeSlider: the slider internally no longer uses the full Integer range as that was susceptible to integer overflows. The minimum and maximum of the slider are now only Integer.MAX_VALUE / 2 apart.

9.0

ImprovementReal-time Engine

LMAP-3046
TLcdSimulator: the simulator no longer unnecessarily stops when the begin- or end-date of the associated ILcdSimulatorModel changes. If the current date is still within the timeframe of the changed begin- and endtime, the current date no longer changes.

8.2

8.2.19

Bug fixReal-time Engine

LMAP-3075
TLcdContinuousDeclutteringLabelPainter: after deleting all objects, it was still possible to re-select them. If at least one object wasn't deleted, this didn't occur.

8.2.16

ImprovementReal-time Engine

LMAP-3063
TLcdSimulator now has an overridable method #currentTime, allowing you to synchronize the clock of the simulator to an external clock (such as, for example, an audio feed).

8.2.14

Bug fixReal-time Engine

TLcdSimulator no longer keeps a reference to the previous track models when the simulator model is set to 'null'.

8.1

8.1.11

Bug fixReal-time Engine

LMAP-2825
TLcdSimulatorModelList: did not set the date of newly added ILcdSimulatorModel's, leaving it in an inconsistent state: not all sub-models necessarily had the same date.

8.1.03

Bug fixReal-time Engine

LMAP-2746
TLcdSimulatorTimeSlider: this slider can now also work with simulator models whose begin and end date are more than Integer.MAX_VALUE milliseconds apart.

7.2

7.2.09

Bug fixReal-time Engine

TLcdSimulator no longer throws ArithmeticExceptions when configured for maximum framerate.

7.2

ImprovementReal-time Engine

TLcdContinuousDeclutteringLabelPainter: now moves the anchor point of the label to the desired label location, where this used to be the top left of the label bounds.

ImprovementReal-time Engine

ALcdTimeIndexedSimulatorModel was added: it is an abstract extension of ALcdSimulatorModel that was designed to handle large data sets, as its time performance is generally related to the amount of changes that are required, not to the total amount of data.

ImprovementReal-time Engine

ALcdSimulatorModel was added: it is an abstract implementation of ILcdSimulatorModel that conveniently handles the properties of the interface and their property changes.

Bug fixReal-time Engine

TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which isLabeled() returned false, and isSelectionLabeled() returned true, invalid warnings were produced.

Bug fixReal-time Engine

TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which isLabeled() returned false, and isSelectionLabeled() returned true, ALcdLabelLocations.setPainted was not called for the labels it had painted.

Bug fixReal-time Engine

TLcdContinuousDeclutteringLabelPainter: no longer tries to spread sub-labels of the same label around. Instead, it respects their relative locations, and they are moved as one single unit.

7.0

7.0

ImprovementReal-time Engine

A new decluttering algorithm was added, specially designed to label moving tracks. The labels move in a continuous fashion, and sudden jumps are avoided. Check out TLcdContinuousDeclutteringLabelPainter or the samples for more information.

6.0

6.0.04

Bug fixReal-time Engine

The previous fix for this bug caused a severe performance degradation, checking whether the element changed was in the model through its integer index. The check is now performed using the spatial index of an element.

Bug fixReal-time Engine

TLcdSimulator no longer throws a NullPointerException when setting the date before setting a simulator model.

6.0

Upgrade considerationReal-time Engine

TLcdSimulator fired events which were not according to the standard. Events for these properties used to start with capitals: maxCPUUsage, delayBetweenUpdateMs. This change will not have an effect at compile time, but may appear at runtime. Adapt the property change listeners to either ignore the case or to use the new property name.

5.1

5.1.07

Bug fixReal-time Engine

TLcdTrackModel now implements the method allElementsChanged. This method rearranges the objects so that they are put in the correct bucket. In absence of this method objects were not painted when moving from one bucket to another with the original bucket not showing in the view while the new bucket shwoing in the view.

5.1.05

Bug fixReal-time Engine

TLcdSimulator now fires property change events for all of its properties.

5.1.04

Bug fixReal-time Engine

TLcdTrackModel now checks whether it contains an object when elementChanged is called. Previously objects could have been added to the model this way.

4.2

4.2.06

Bug fixReal-time Engine

com.luciad.realtime.TLcdTrackModel threw a NullPointerException when calling removeAllElements.

4.0

4.0

ImprovementReal-time Engine

com.luciad.realtime.TLcdTrackModel is an com.luciad.model.ILcdModel implementation that has less overhead than a com.luciad.model.TLcd2DBoundsIndexedModel for dynamic data without having to paint all objects in a model like a com.luciad.model.TLcdVectorModel.

ImprovementReal-time Engine

com.luciad.realtime.TLcdSimulatorModelList is a composite com.luciad.realtime.ILcdSimulatorModelList implementation.

3.2

3.2.14

ImprovementReal-time Engine

com.luciad.realtime.TLcdSimulator handles changes in the simulator model by listening to change events of the property trackmodel. This avoids the need of setting a new track model every time a change occurs.

3.2

ImprovementReal-time Engine

com.luciad.realtime.TLcdSimulator has a property to allow the application to manage the number of cached background layers.

3.1

3.1.16

ImprovementReal-time Engine

com.luciad.realtime.TLcdSimulator sets autoUpdate to false before calling setDate on the simulator model. This allows simulator models to generate model changed events without causing the view to repaint itself.