2026.0.03

ImprovementLuciadCPillar

LCP-1593
WMTS models now support invalidation through the IRasterModel::invalidateIRasterModel::invalidateIRasterModel::invalidate method. Consequently, IRasterModel::canInvalidateIRasterModel::canInvalidateIRasterModel::canInvalidate now returns true for WMTS models.

ImprovementLuciadCPillar

LCP-1592
WMS models now support invalidation through the IRasterModel::invalidateIRasterModel::invalidateIRasterModel::invalidate method. Consequently, IRasterModel::canInvalidateIRasterModel::canInvalidateIRasterModel::canInvalidate now returns true for WMS models.

Bug fixLuciadCPillar

LCP-1588
The Qt windows sample crashed at startup since the dawn upgrade to version 7680_66+1 in LuciadCPillar 2026.0.01. This has been fixed.

Bug fixLuciadCPillar

LCP-1595
When adding a FeatureLayerFeatureLayerFeatureLayer to a controller's LayerListLayerListLayerList, its labels weren't painted anymore. This would for example show up during creation of labeled features. This is a regression that was introduced in the LuciadCPillar 2026.0 release.

Bug fixLuciadCPillar

LCP-1585

Fixed an issue where min/max altitude values in some tactical graphics labels were fetched from the 'Additional Information' modifier instead of from the 'Altitude/Depth' modifier.

Affected symbols:

Standard(s) Hierarchy Code Name
APP-6A & APP-6B 2.X.2.1.2.2.3 Standard-Use Army Aircraft Flight Route (SAAFR)
APP-6A 2.X.2.3.3.2 Airspace Coordination Area (ACA)

Upgrade considerationLuciadCPillar

LCP-1576
The following third party library has been updated to mitigate known security vulnerabilities:
  • libcurl: updated to version 8.19.0

2026.0

2026.0.01

ImprovementLuciadCPillar

LCP-1192
The WfsCapabilitiesWfsCapabilitiesWfsCapabilities now provides information on the version of the WFS capabilities response. It is now possible to specify a specific WFS version in the URL for the capabilities or for decoding. This may allow working with WFS servers that only implement certain versions correctly.

ImprovementLuciadCPillar

LCP-528
Improved the rendering of the "Sea Mine" symbols when their fill is disabled for various standards. When their symbol fill is disabled, the hierarchy representation is no longer filled, revealing additional details such as the 'N' icon inside the "Ground (Bottom) Non-Mine Mine-Like Contact" MIL-STD-2525c symbol. This makes the "Sea Mine" symbols more recognisable. This change affects the "Sea Mine" symbols in the following standards: APP-6D, MIL-STD-2525c, MIL-STD-2525d.

ImprovementLuciadCPillar

LCP-637
It is now possible to configure the size of the icon of the "Biological Contaminated Area", "Chemical Contaminated Area", "Radiological Contaminated Area" and "Nuclear Contaminated Area" symbols. The icon size of these symbols can be configured in MilitarySymbolStyleMilitarySymbolStyleMilitarySymbolStyle using the method MilitarySymbolStyle::Builder::iconSizeMilitarySymbolStyle::Builder::iconSizeMilitarySymbolStyle::Builder::iconSize.

ImprovementLuciadCPillar

LCP-409

It is now possible to configure the icon type of the "Antitank Obstacles, Tetrahedrons, Dragon's Teeth and Other Similar Obstacles" symbols in APP-6A and APP-6B. These symbols can have different icons depending on their type: "Fixed And Prefabricated", "Movable" or "Movable And Prefabricated". Unfortunately the APP-6A and APP-6B specifications do not indicate how this obstacle type should be encoded in the symbol.

The approach taken here is similar to other Luciad products: the obstacle type is encoded in the TypeLabel text modifier of the symbol. The value should either be one of the following values (casing is not important):

Obstacle Type Possible values
Fixed And Prefabricated "Fixed And Prefabricated", "F", "01"
Movable "Movable", "M", "02"
Movable And Prefabricated "Movable And Prefabricate", "P", "03"

ImprovementLuciadCPillar

LCP-1117
We added the possibility to use "kt" and "kts" next to "kn" as abbreviations for speeds in "knots" inside the military symbol "speedLabel" modifier.

ImprovementLuciadCPillar

LCP-348
The packaging for the Linux zip-archive now uses symbolic links for the versioned libraries, reducing the size of the archive.

Bug fixLuciadCPillar

LCP-1197
Fixed an issue where 3D tiles could sometimes be painted twice if the dataset contained a mix of meshes and point clouds.

Bug fixLuciadCPillar

LCP-564

Resolved an issue where the value of the 'Additional Information' modifier was used instead of the 'Width' modifier in the labels of following symbols:

Standard(s) Set Code Symbol Code Name
APP-6D & MIL-STD-2525d 25 170100 Air Corridor
APP-6D 25 170101 Air Corridor With Multiple Segments
APP-6D & MIL-STD-2525d 25 170200 Low-Level Transit Route
APP-6D & MIL-STD-2525d 25 170300 Minimum-Risk Route
APP-6D & MIL-STD-2525d 25 170400 Safe Lane
APP-6D & MIL-STD-2525d 25 170500 Standard Use Army Aircraft Flight Route (SAAFR)
APP-6D & MIL-STD-2525d 25 170600 Transit Corridors
APP-6D & MIL-STD-2525d 25 170700 Unmanned Aircraft (UA) Route

Bug fixLuciadCPillar

LCP-1567
Edit handles of a feature in a non-editable layer became visible after an external model change.

Bug fixLuciadCPillar

LCP-522
Fixed a configuration issue with the MIL-STD-2525c "Law Enforcement - Prison" (6.X.3.4.11) symbol where it was not possible to set the symbol's echelon modifier value to "Installation" or "Feint Dummy Installation". This caused the "Prison" symbol to be rendered without the installation echelon indicator.

Bug fixLuciadCPillar

LCP-1562
The icon symbols in MIL-STD-2525d and APP-6D have been reviewed, and the use of the Sector 1 and Sector 2 modifiers has been adjusted where necessary.

Bug fixLuciadCPillar

LCP-1205
Corrected the "Jet Stream" symbol for the APP-6A, APP-6B, APP-6D symbologies.

Bug fixLuciadCPillar

LCP-1206
Corrected the icons for the APP-6A and APP-6B "Thunderstorm" symbols W*A*ST----***** and W*A*STR---*****.

Bug fixLuciadCPillar

LCP-1164
Fixed an issue with the APP-6A/B 'Counterattack By Fire' symbol. The additional arrow at the tip of the symbol has been removed as it is only expected as of APP-6C.

Bug fixLuciadCPillar

LCP-1208
Resolved the following issues with the depiction of the MIL-STD-2525b symbol "Dummy Minefield - Dynamic" (2.X.2.3.7).
  • The outline of the area is now drawn with a solid stroke instead of a dashed stroke
  • The hostile indicator ("ENY") is now rendered in the outline stroke, when the symbol's affiliation is set to 'Hostile'

Bug fixLuciadCPillar

LCP-1209
Fixed the definition for MIL-STD-2525d and APP-6D "Linear Targets" symbols, which, according to the specification, require "exactly" two anchor points in stead of "at least" two.

Bug fixLuciadCPillar

LCP-561
Fixed an issue were the possible values of the status modifier of MIL-STD-2525c symbols were not properly configured. All the MIL-STD-2525c symbols were configured with the same set of possible values. The list of possible values of the status modifier are now configured so the symbols from the different branches of the symbol hierarchy ("War Fighting", "Tactical", "Signals Intelligence", "Stability Operations" and "Emergency Management") have the correct set of possible values, as defined in the MIL-STD-2525c standard.

Bug fixLuciadCPillar

LCP-561
The missing static/dynamic modifier was added to symbols of the METOC branch of the MIL-STD-2525c symbol hierarchy. The value of this modifier can be set by calling the method MilitarySymbol::putValueMilitarySymbol::putValueMilitarySymbol::putValue with the modifier MilitarySymbol::Modifier::StaticDynamicMilitarySymbol::Modifier::StaticDynamicMilitarySymbol::Modifier::StaticDynamic.

Bug fixLuciadCPillar

LCP-1207
Added the missing "Armored Carrier with Volcano" (1.X.3.2.2.3.4.3) symbol to the APP-6B symbol hierarchy.

Bug fixLuciadCPillar

LCP-1203

The main geometry type of a number of APP-6A/B "Minefield" symbols has been changed. These symbols were modeled as polygons, which required the symbol to have at least 3 anchor points to define the symbol's shape. To better align these symbols with the NVG geometry bindings specification, the geometry has now been changed to a point, which requires only a single anchor point to define the symbol's shape. The following symbols are affected by this change:

  • 2.X.2.2.1.6.1 "Planned Minefield"
  • 2.X.2.2.1.6.2 "Completed Minefield"
  • 2.X.2.2.1.6.5 "Antitank (AT) Minefield"
  • 2.X.2.2.1.6.6 "Scatterable Mines"
  • 2.X.2.2.1.6.7 "Antipersonnel (AP) Minefield Reinforced With Scatterable With Self-Destruct Date-Time-Group"
  • 2.X.2.2.1.6.8 "Scatterable Minefield (Antitank Mines) With Self-Destruct Date-Time-Group"
  • 2.X.2.2.1.7 "Executed Volcano Minefield"

Bug fixLuciadCPillar

Fixed a very rare deadlock that could occur when destroying the MapMapMap or Map::RendererMap::RendererMap::Renderer.

Bug fixLuciadCPillar

LCP-1198
Fixed an inconsistency in the C# API.

Upgrade considerationLuciadCPillar

LCP-1210
The dawn third party library has been updated to version 7680_66+1 to fix vulnerability CVE-2026-3062.

Upgrade considerationLuciadCPillar

LCP-1204
The geometry type of the APP-6A/B symbol 2.X.2.3.1.1.2 "Fire Support Graphics - Fire Support Point - Target - Circular Target" has been changed. This symbol's geometry type was a circle, which required the symbol to have 2 anchor points to define the symbol's shape. To better align this symbol with the NVG geometry bindings specification, the geometry has now been changed to a point, which requires only a single anchor point to define the symbol's shape.

Upgrade considerationLuciadCPillar

LCP-1188
The following third party library has been updated to mitigate known security vulnerabilities:
  • libpng: updated to version 1.6.55

2026.0

New featureLuciadCPillar

It is now possible to integrate LuciadCPillar in the C# WinUI 3 framework. This is demonstrated in the winui3 sample.

New featureLuciadCPillar

LuciadCPillar now provides support for using Geography Markup Language (GML) files. The use of the main class GmlModelDecoderGmlModelDecoderGmlModelDecoder is explained in the Decode and visualize GML data article. You can use the data formats sample to load a GML file.

New featureLuciadCPillar

LuciadCPillar now provides support for using OGC Web Feature Service (WFS). The use of the main classes WfsCapabilitiesWfsCapabilitiesWfsCapabilities and WfsModelDecoderWfsModelDecoderWfsModelDecoder is explained in the article on Decode and visualize WFS data. You can use the data formats sample to connect to Web Feature Services.

New featureLuciadCPillar

Added support for parameterized, expression-based styling of lines and areas. With this new feature, you can style entire groups of features by providing style expressions that control various aspects of the visualization. For lines, the color, visibility and width can be controlled. For areas, the color and visibility can be controlled. The expressions are evaluated on the GPU, which allows you to perform style updates very efficiently. Refer to the parameterized feature styling guide for more information.

New featureLuciadCPillar

LCP-776
Added HatchedIconBuilderHatchedIconBuilderHatchedIconBuilder to easily create and customize hatched icons.

ImprovementLuciadCPillar

LCP-1141, LCP-1146
You can now visualize regular and parameterized icons with enhanced transparency by enabling the IconDrawCommand::transparency and IconsDrawCommand::transparency flags respectively.

ImprovementLuciadCPillar

Parameterized icons can now take full advantage of IIconIIconIIcons that support display scaling. On high-DPI displays, parameterized icons get rendered at the appropriate resolution, instead of being upscaled from display scale 1.0.

ImprovementLuciadCPillar

Map::ViewMapTransformation::viewToMapMap::ViewMapTransformation::viewToMapMap::ViewMapTransformation::viewToMap with Map::LocationMode::ClosestSurfaceMap::LocationMode::ClosestSurfaceMap::LocationMode::ClosestSurface now doesn't return world points on surfaces that were painted in a controller anymore. This fixes a potential problem where measurement controllers would measure their own visualization.

ImprovementLuciadCPillar

A FeatureQueryFeatureQueryFeatureQuery now can be configured with a CancellationTokenCancellationTokenCancellationToken. It is recommended to take this into account when implementing the method IFeatureModel::queryIFeatureModel::queryIFeatureModel::query. This allows to close an application quicker when it is still performing a feature query.

ImprovementLuciadCPillar

The WmsModelDecoderWmsModelDecoderWmsModelDecoder and WmtsModelDecoderWmtsModelDecoderWmtsModelDecoder now also support the `image/jpgpng` media type, which can be served by LuciadFusion.

Bug fixLuciadCPillar

In some cases, no terrain was painted in a 1-pixel wide zone around the meridian.

Upgrade considerationLuciadCPillar

The minimum required version of Visual Studio has been raised from Visual Studio 2019 (v16) to Visual Studio 2022 (v17.10).

Upgrade considerationLuciadCPillar

The versions of Gradle, Kotlin and the Android Jetpack libraries the LuciadCPillar Android samples depend on have been updated. This has no effect on the use of the LuciadCPillar API.

Upgrade considerationLuciadCPillar

The default behavior for ParameterizedFeatureCanvas::IconsDrawCommandParameterizedFeatureCanvas::IconsDrawCommandParameterizedFeatureCanvas::IconsDrawCommand has changed from the icons not being draped, to the icons being draped if the geometry has a zero Z value for consistency with FeatureCanvas::IconDrawCommandFeatureCanvas::IconDrawCommandFeatureCanvas::IconDrawCommand. Applications relying on the default behavior may have to add an explicit call to ParameterizedFeatureCanvas::IconsDrawCommand::draped() to enforce the desired behavior.

Upgrade considerationLuciadCPillar

LuciadCPillar transitioned from OpenGL to WebGPU for graphics rendering. Because of this transition, Qt applications integrating LuciadCPillar now require a version of Qt greater than or equal to 6.8 (LTS). From this version on, Qt has sufficient support for the Vulkan graphics API, which is used as a backend for WebGPU.

The LuciadCPillar samples have been updated to use Qt version 6.8 (LTS). See the installation instructions and requirements page for details. Note that the VulkanSDK 1.4.321.1 also needs to be installed on your system to compile the samples.

The change to WebGPU and the upgrade to Qt 6.8 have no effect on the use of (most of) the LuciadCPillar API itself, but it requires changes to the Qt integration code. If you have an application that uses Qt, you will need to copy the integration code from the LuciadCPillar samples to your own code base again. Additionally, you will need to make a few modifications:

  • The QQuickMapObject class has been renamed to QQuickMapItem.
  • The QMapWidget class has been removed and replaced by the new QMapWindow class. Note that the new class is not a QWidget anymore. You can adapt it to a QWidget using the QWidget::createWindowContainer function. This is demonstrated in the Qt Widgets sample.

Upgrade considerationLuciadCPillar

Update Nuget Packages used by the C# samples. System.Text.Json to version 9.0.10 and System.Threading.Tasks.Extensions to 4.6.3.

Upgrade considerationLuciadCPillar

The API related to Map::RendererMap::RendererMap::Renderer has been changed. The following modifications were made: Additionally, the Map::IRendererCallbackMap::IRendererCallbackMap::IRendererCallback methods now also get a Map::RendererMap::RendererMap::Renderer passed in as parameter. When you implement this interface, this will result in a compile error which can be fixed by adding the additional Map::RendererMap::RendererMap::Renderer parameter to the implementation's methods.

Upgrade considerationLuciadCPillar

LuciadCPillar now targets the C++ 20 standard.

Upgrade considerationLuciadCPillar

LuciadCPillar transitioned from OpenGL to WebGPU for graphics rendering. This transition introduced minor visual differences compared with previous versions of LuciadCPillar:
  • Blending of (semi-)transparent colors now happens in linear color space whereas it happened in gamma color space (sRGB) in previous versions. This change resolves blending artifacts, but it can make blended colors slightly brighter. This is especially noticeable when LuciadCPillar renders thin lines or thin text.
    Blending in a linear vs gamma color space
  • Texture sampling now happens in linear color space whereas it happened in gamma color space (sRGB) in previous versions. Similarly to blending, this change resolves minor artifacts, but it might look slightly different from before.
    Texture sampling in a linear vs gamma color space

Upgrade considerationLuciadCPillar

The minimum gcc compiler version on Linux is now version 13.

Upgrade considerationLuciadCPillar

The minimum Android API level supported by LuciadCPillar is now 33. For more information about the evolution in the supported API Level, refer to the System Requirements documentation.

Upgrade considerationLuciadCPillar

A new IFeatureQueryCallback::handleTerminationIFeatureQueryCallback::handleTerminationIFeatureQueryCallback::handleTermination method has been added to the IFeatureQueryCallbackIFeatureQueryCallbackIFeatureQueryCallback interface. In combination with the new FeatureQuery::getTooManyFeaturesCountFeatureQuery::getTooManyFeaturesCountFeatureQuery::getTooManyFeaturesCount, you can use this method in your IFeatureModel::queryIFeatureModel::queryIFeatureModel::query implementations to signal that the query would have returned more features than the caller can handle. When upgrading, you will need to implement this new method in any classes extending from the IFeatureQueryCallbackIFeatureQueryCallbackIFeatureQueryCallback interface. You may do this using an empty method body.

Upgrade considerationLuciadCPillar

PixelFormat::Rgb565 has been removed from the API. If you were using an image with this pixel format, it's advised to convert it to an image with a different pixel format. For example PixelFormat::Rgb888PixelFormat::Rgb888PixelFormat::Rgb888 or PixelFormat::Rgba8888PixelFormat::Rgba8888PixelFormat::Rgba8888.

Upgrade considerationLuciadCPillar

The following third party libraries have been updated:
  • GDAL: updated to version 3.10.3+1
  • PROJ: updated to version 9.6.0
  • libwebp: updated to version 1.5.0
  • libjpeg: updated to version 9f
  • json-c: updated to version 0.18
  • expected-lite: version 0.9.0
  • eigen: version 3.4.1
  • abseil: version 20240722.0
  • protobuf: version 5.27.0
  • glu: version 1.3+7
The following third-party libraries have been added:
  • expat: version 2.7.1
  • xerces-c: version 3.3.0

Upgrade considerationLuciadCPillar

LuciadCPillar transitioned from OpenGL to WebGPU for graphics rendering and therefore now depends on dawn, version 7582+2. This library internally relies on these additional third-party libraries, managed independently by dawn itself:
  • abseil
  • directx-shader-compiler
  • directx-headers
  • jsoncpp
  • spirv-headers
  • spirv-tools
  • vulkan-headers
  • vulkan-loader
As a result, the following third-party libraries have been dropped:
  • OpenGL
  • GLAD

Upgrade considerationLuciadCPillar

LCP-1160
The following third party library has been updated to mitigate known security vulnerabilities:
  • openssl: updated to version 3.4.4