Kanzi 3.9.7 release notes¶
Activities and Code Behind¶
In the Activity Browser, when an Activity node is the root node, Kanzi Studio now issues a warning. In such cases, Kanzi Studio automatically sets the Activity Status property of that Activity to Active. Take that into account, if you want to use that Activity as a root Activity in your application.
In Kanzi Studio, you can now create an Activity Property of type String.
For example, this enables you to preserve text that a user has entered in a text box when the Activity is deactivated.
When resource loading fails during the activation of an Activity, Kanzi now logs a cause of the error.
Kanzi Studio now builds Code Behind from the Activity Browser only for the current Preview configuration.
Kanzi Studio now does not allow you to rename a Kanzi Code Behind plugin after you create the plugin.
Bindings¶
Added the
format
binding function that you can use to format property values to strings. See format, Formatting display of property values, and Setting text order in a localized string.When you set a binding, you now get a handle that does not take the ownership or prevent the removal of that binding. When you call
BindingHostConcept::removeBinding
, the weak pointer inBindingRuntimeHandle
does not prevent the removal of the binding.To migrate your Kanzi application, see Changes to setting and removing of bindings.
From
binding_processor_runtime.hpp
removed them_lookupContext
class member asBindingProcessorRuntime
can access theBindingRuntime
which provides an accessor to the lookup context. See Changes to the bindings API.
List Box and Scroll View¶
The List Box nodes and List Box Item Container prefabs that you create in Kanzi Studio are now focus scopes and handle the key focus and key input by default. This enables you to navigate the focus through the focusable list items and focusable nodes in each list item.
In a List Box, the item selection and key focus are now synchronized by default.
Introduced these properties that you can use to reverse the direction of touch scroll:
In the Scroll View nodes, the Reversed X Axis Scroll (
ScrollViewConcept::ReversedXAxisScrollProperty
) and Reversed Y Axis Scroll (ScrollViewConcept::ReversedYAxisScrollProperty
) properties.In the List Box nodes, the Reversed Scrolling (
TrajectoryListBox3D::ReversedScrollingProperty
,GridListBoxConcept::ReversedScrollingProperty
) property.
Meshes and morphing¶
Meshes now support the binormal attribute semantic. This enables you to use the binormal channel that is stored in the mesh data, instead of generating the binormal in the shader.
Kanzi now supports activating any number of morph targets at once. See Using Morph resources.
Rendering¶
Introduced the Render target > Multisample Level (
Node2D::MultisampleLevelProperty
) property that enables you to apply multisample anti-aliasing to a 2D node whose content Kanzi renders to a composition target. See Multisampling 2D content.You now can use ranges as input parameters to uniforms in a shader that you use to render a brush. When you use a range as a parameter to an array uniform, Kanzi fills the array with elements from that range.
Resource management¶
You can now set in the application configuration how to handle GPU resources when your Kanzi application is in the paused state. For example, you can set your application to destroy all GPU resources in the paused state.
On Android, the GPU resources become invalid by default. On other platforms, Kanzi no longer invalidates the GPU resources by default.
See HandleGPUResources.
Kanzi Studio usability¶
When you create a project with the Android application or Android application with Java plugin template, you can now set the name of the Android package for the project and, when you add Code Behind, of the Code Behind package. See Developing with the Kanzi Android framework (droidfw).
You can now open an Android project in Android Studio from Kanzi Studio.
Added a command that lets you copy the startup prefab URL of a project to your clipboard.
For custom property types added a context menu command that enables you to select that property type in the Library window.
Highlights of a release are now presented directly in Kanzi Studio.
You can now let Kanzi Studio send to Rightware anonymized usage data that helps us understand how we can improve Kanzi Studio. See Telemetry.
Kanzi Engine C++ API¶
In the log, Kanzi Engine now shows
KzuExpressionValidatorOperation
enumerator names, instead of their internal type values. This makes it easier to find issues in bindings when you create bindings using the Kanzi Engine C++ API.Added the
DynamicPropertyType::tryCreate
function that returns anOptionalDynamicPropertyType
. You can use the optional type to declare aDynamicPropertyType
without initializing it.Converted the Win32 WGL graphics output API from C to C++ and improved the API.
Kanzi Java API¶
Kanzi Java API now supports properties with enum data types. To migrate your Kanzi application, see Support for enum properties.
When you import Kanzi Engine Java plugin files that are not in the
lib/java/<BuildType>/
path, Kanzi Studio now marks them as invalid.
Kanzi Android framework (droidfw)¶
Updated the Kanzi Android framework (droidfw) project templates to use Gradle 7.3.3 and Android Gradle Plugin 7.2.2.
Kanzi Studio plugin interface¶
Added
DataUtilities.GetCombinedHashCode
that gets the combined hash code for the given integer-type arguments.Added
Project.GetPreviewConfiguration
that gets the Preview application configuration that Kanzi Studio currently uses.You can now use the Kanzi Studio plugin interface to create and apply 2D effects. See
Project.CreateNodeEffectPrefab2D
andProject.CreateNodeEffect2D
.
Platforms¶
Added an application configuration that enables you to set on the platforms that use the GBM windowing system which graphics card you want your Kanzi application to use. See DeviceIdentifier and Changes to Graphics Output and Desktop.
Updated Integrity platform packages to use HarfBuzz 5.3.1.
kzb version¶
Changed the version of the kzb file format to 25.0.
Documentation¶
Added detailed explanation on how transitions between Activities work. See Status management of Activities.
Added animations that visualize Activity transition types. To see the animation of a transition, hover over the image of that transition. See Activity transition types.
Added instructions on how to import PO files for localization tables using a script. See ImportAllLocalizationTables.
Added visual content to support the instructions for working with Flow Layout nodes. See Using the Flow Layout nodes.
Redesigned the tutorial where you learn how to apply a Gaussian blur effect and how to apply that effect when a condition is met. See Tutorial: Create a Gaussian blur effect.
Redesigned the tutorial where you learn how to create a toggle button. See Tutorial: Creating a toggle button.
Notable fixes¶
Kanzi Engine¶
Fixed the issue that caused Kanzi to render small quads in place of empty glyphs, such as space characters. (143042)
Fixed the issue that caused the last focused node of a focus scope to always get logical focus when becoming a focus scope. (426990)
Fixed the issue that caused a Toggle Button Group to set in the
ToggleButtonGroupConcept::ToggledMessage
an incorrect index for the active Toggle Button. (436417)Fixed the issue that prevented the Set Property Action from working when you set a resource as the Source Item, and restricted items in Target Item to nodes. (441283)
Fixed the issue that caused two property change notifications instead of one when Kanzi attaches a modifier binding. For example, when Kanzi executes an Apply Property Action. (443038)
Unified the lookup contexts for a binding, which slightly decreases memory footprint and increases performance. (443610)
Fixed the hierarchy of
BindingProcessor
in the Kanzi Java API. (444467)Fixed the issue that prevented the Kanzi Studio Log window from showing Unicode characters correctly in Kanzi Engine log messages. (445591)
Fixed the issue that caused an Activity in an Exclusive Activity Host to remain active when in some cases during an Activity transition you activate another Activity. (449575)
Fixed the issue where after rendering an instanced mesh, Kanzi rendered subsequent 2D objects multiple times. (451135)
Fixed the issue that caused Kanzi to terminate when you use the FreeType font engine to render TrueType fonts with fixed-size bitmap glyphs. (451578)
Fixed the issue that caused Kanzi to terminate when you use the iType font engine to render TrueType fonts with colored bitmap glyphs. (451644)
The Performance HUD now reports the triangle count for all instances of meshes. (451874)
Fixed the issue that prevented Kanzi from mapping in a mesh the tangent channel correctly if the bitangent channel was available. (452375)
Fixed the issue that caused the
updateVertexAttributeOffsetsAndVertexSize
andupdateVertexAttributeStrides
functions to incorrectly update vertex format info for an instanced Mesh. (452578)Fixed the quadratic
ResourceManager::purge
time complexity and linear resource removal time complexity to improve resource removal andResourceManager::purge
performance. (454362)Fixed the issue that caused a file descriptor leak for each loading of a kzb file. When Activities with Kanzi content were frequently created in the same process, this caused Android to terminate the application when the number of file descriptors in the process reached an upper limit. (454389)
Fixed the issue that prevented localization from working when you override the Metaclass of the
Screen
class. (455169)Fixed the
kzCameraNearFarPlane
shader uniform. (455708)
Kanzi Studio¶
Fixed the issue that broke Kanzi Studio functionality when you rename a package of an Android application that uses Java Code Behind. (410677)
Fixed the issue that required Kanzi users to install Visual Studio 2017 to use the Code Behind feature. (422915)
In the Write Log action, fixed the <EventName> macro to print the name and message type of a message trigger, instead of
Kanzi.MessageTrigger
. (435792)Kanzi Studio no longer fails to import in a glTF file mesh attributes that use application-specific semantics. Kanzi Studio uses for these attributes the CUSTOM semantic and names them after the glTF attribute semantic. (445105)
In the Activity Browser, fixed the dragging of Activities that use the same value for the Activity Prefab Template property. (449142)
Fixed the issue that regardless of the cursor position, caused Kanzi Studio to insert a macro in the beginning of the Log Text property of a Write Log Action. (450567)
Fixed the issue that in a newly created project, the Kanzi Android Framework project could have a wrong reference to the project kzb file. (451511)
Fixed the issue that caused Kanzi Studio to swap the names of the Flip Vertical and Flip Horizontal Activity transitions. (454405)
Fixed the issue that caused kzb loading to fail when a project uses a custom action that is derived from a class that is derived from the
ForwardingAction
class. (455848)
Kanzi framework SDK¶
Fixed the issue that prevented the SCons build scripts from working when you use SCons 4.5. (455514)