All build components have been updated to newest versions available.
We switched to a new version of the MSVC compiler and did the usual dance with the numerous optimization choices. We see slight general increases in performance with some places benefiting more than others, but most importantly, no regressions.
GPGPU code is recompiled using CUDA 10.2. With the next version of CUDA we might no longer be able to support devices of compute capability 3.0 (Kepler), depending on whether NVIDIA will still support them.
ECW code is updated to use the newest ECW modules, fixing a couple of minor bugs during reads.
MRSID code is updated to use the newest MRSID modules, fixing a couple of minor bugs as well.
V8 is updated to the newest version used by Chrome, providing noticeable savings in the amounts of used memory (very welcome as scripting engines used by browsers are historically way too aggressive on that front).
Renamed transforms: Closest Euclidean, Xxx -> Closest Euclidean Xxx.
Renamed transforms: Closest Path, Xxx -> Closest Path Xxx, renamed parameter: Use equal weights -> Use equal costs.
(Fix) Closest Path transforms treat zero costs as invalid (can be thought of as infinite). (Negative costs already were invalid.)
(Fix) Tile distance / viewshed / watershed computations correctly handle images with YX coordinate systems.
TileDistanceMake / Par query functions are split by distance type. The new TileDistanceMakeWeighted / Par functions create a distance object for path distances. The remaining TileDistanceMake / Par functions create a distance object for Euclidean distances.
New transforms: Closest Slope Path Distance / Length / Source - compute path distance generating costs from raster slopes. Parameters: Min slope / Max slope - control minimum and maximum value for the allowed slopes, slopes equal or lower than minimum or equal or higher than maximum are considered to be untraversable. Min cost / Flat cost / Max cost - specify costs for minimum slope, zero or flat slope, maximum slope. The defaults for Min slope / Max slope are -90 / 90 (note that neither value is reachable). The defaults for Min cost / Flat cost / Max cost are 0 / 1 / 2.
New query functions: TileDistanceMakeSlope / Par - power the Closest Slope Path transforms.
Transform templates for tile fields in tables (operating on table window) automatically determine the number of channels in tile values from metadata and filter available transforms accordingly. (As a side effect, this gets rid of the double Limit Xxx transforms for tile fields, leaving only the versions of those transforms that operate on pixel values, not on whole tile values taken as binary data.)
Editing component names in the Rename Related dialog is smarter at finding and adjusting similar names (numeric postfixes are ignored so that 'Mexico 2' and 'Mexico Table 2' get renamed together, etc).
The map window allows switching out of cursor modes for inserting new geometry on Alt-click (pick) or Ctrl-click (select) if there is no current geometry being edited - eg, right after adding an object.
Circle and ellipse arcs are rendered more accurately. (We first made several adjustments to the linearization code which made it 4x more economic at small curves, and then increased the maximum number of intermediate coordinates allowed per curve segment accordingly - the result is smoother curves with no cost to rendering. The improvement applies to exports and transforms as well.)
(Fix) The map window no longer fails to show the snap reticule for the tracker tool when it is just starting its line. (The snap was working, but the reticule was not showing.)
The Delete Related / Rename Related dialogs select the clicked component on startup. (The Show Related dialog was already doing that.)
Turning off background for a map in the Layers pane preserves the background color. (Previously, turning off background was resetting its color to black.)
The map window allows unselecting all data in all layers (including hidden ones) using the new Edit - Select None Map command.
The Layers pane allows right-clicking a map layer and making it active using the new Active command in the context menu. Making the layer active from the Layers pane will both switch the active tab in the map window and switch the active component within that tab if the tab hosts a group of layers. If the layer is already active, the Active command will show this using an icon.
The Layers pane allows right-clicking a layout frame and making it active. The frame has to be visible.
The Layers pane allows right-clicking a table field and making it active. The field has to be visible.
Alt-clicking the name of a map layer / layout frame / table field in the Layers pane makes it active in the window.
The table window allows right-clicking a field header and showing the field in the Layers pane using the Show in Layers command.
The table window allows right-clicking a field header and sorting records using values in that field using the new Order Ascending / Order Descending commands. If the current order is already based on the clicked field, the commands will indicate that using icons. (If the current order is based on multiple fields, neither of the icons will be 'pushed in', because invoking the relevant command will alter the order and make it based on the clicked field alone.)
The table window no longer shows the Use as Identity command for binary fields. (It was doing nothing, binary fields cannot be used as identity.)
The table window allows right-clicking a field header and resizing the field to fit its values using the Best Fit / Best Fit Title commands. (We used to have these commands earlier, we took them off in part because of changes to the internals of the table window. Now they are back, adjusted to behave well.) Using Best Fit commands on binary fields does not retrieve field values and instead uses width that is wide enough to fit most reasonable values of the relevant type.
The New Map dialog is reworked to always display a list of components in the data source that the map is going to be created in. The toolbar above the list of components includes a button that switches between showing all available components and only those components that have been picked for the map. If the dialog is started on a single component, it starts in the mode that shows all available components, and the context component is picked for the map. If the dialog is started on multiple components, it starts in the mode that shows only the components picked for the map and with the context components all picked.
Exporting labels to DXF writes text height tag to make exported files readable in various versions of AutoCAD.
(Fix) Reading an NTF NITF file with embedded JPEG2000 no longer fails with an error. (JPEG2000 data currently remains inaccessible - we are working on reading it seamlessly - but at least there is no error.)
Reading ECW reads 16-bit values in raw format. (Previously, these values were mapped to 8-bit RGB.)
Reading ECW supports multi-channel images (ECW v3).
End of list.
Tentative plans for the next build are to add support for legends.