Kanzi 3.9.6 release notes¶
New features¶
You can now add geometry and tessellation shaders to a material type. See Using geometry shaders and Using tessellation shaders.
Feature improvements¶
Introduced advanced color blending modes. See Advanced color blending modes.
Source
Destination
Result
Introduced these ARGB graphics formats:
GraphicsFormatA8R8G8B8_SNORM
GraphicsFormatA8R8G8B8_UINT
GraphicsFormatA8R8G8B8_SINT
GraphicsFormatA16R16G16B16_UINT
GraphicsFormatA16R16G16B16_SINT
GraphicsFormatA16R16G16B16_UNORM
GraphicsFormatA16R16G16B16_SNORM
GraphicsFormatA16R16G16B16_SFLOAT
GraphicsFormatA32R32G32B32_UINT
GraphicsFormatA32R32G32B32_SINT
GraphicsFormatA32R32G32B32_SFLOAT
You can now define the surface format, filtering, and clear color for the render targets generated by
NodeEffectRenderer2D
.Kanzi Java API improvements:
Added to the
KanziObject
class thetryCreateObjectRef(Class<>)
function that attempts to create an owningObjectRef
for anyKanziObject
. You can use it to avoid throwing aStaleObjectException
when an object is stale. See Managing instance lifetime.Added to the
TextResource
class functioncreate(Domain domain, String name, String value)
thevalue
parameter that enables you to create aTextResource
with a value.Added the
ColorWorkflow
enum withLegacy
andLinear
values to represent the color workflow in use. Added to theDomain
class thegetColorWorkflow()
function that returns the currentColorWokflow
.Added to the
BitmapImage
class thepremultiplyAlpha()
function that premultiplies the color and luminance channels with the alpha channel.Modified the
ResourceManager.LoadTask
andResourceManager.ProtocolHandler.Result
types to use strongObjectRef
instances for tracking resources. See Changes to Kanzi Java API Custom Resource Manager Protocol.Added to the
ResourceManager
class thesetDefaultMemoryStrategy(MemoryStrategy)
andgetDefaultMemoryStrategy()
functions that can control the Resource Manager memory strategy.Added to the
Node2D
class thegetWorldTransform()
andtransform()
functions.Added the
TaskDispatcher
class that enables you to dispatch tasks to the Kanzi UI thread from other threads.You can now access the
ResourceDictionary
class from Java.Added to the
Node
class these methods to access the Resource Dictionary of a Node:Node.getResourceDictionary()
Node.acquireResourceDictionary()
Node.setResourceDictionary(ResourceDictionary)
Node.setResourceDictionary(ResourceDictionary)
Node.notifyResourceDictionaryModified()
Kanzi Android framework (droidfw) improvements:
Kanzi views now use independent input and focus management. This means that:
Input in one view does not have a direct effect on another view.
Focus overlays, such as modals, are restricted to their owning view.
This improvement changed the structure of the node tree in a Kanzi view. See Changes to accessing Kanzi Java API from Kanzi Android framework (droidfw) and Accessing the Kanzi Java and Kotlin API.
Improved startup performance by:
Changing the default
DeploymentQueueBudget
for Kanzi Android framework (droidfw) applications to 5 milliseconds per frame. See DeploymentQueueBudget.
Improving the utilization of
DeploymentQueueBudget
per frame for loading of dependencies.
When its reference count drops to zero,
KanziRuntime.Reference
now automatically releases its payload, if you do not close it manually.
Kanzi Studio now shows more details, including callstack, for runtime errors in Java plugins.
Introduced to the
ActivityCodeBehind
class callback methods for Activity status changes. These methods make it easier to define the behavior of Code Behind when the state of the Activity changes.The updated Activity Code Behind template replaces the use of
registerStatusChangeOverride
with the new methods.Added the Data Context property as a frequently used property of the Data-Driven Exclusive Activity Host.
In the Activity Browser, you can now:
Add Activity Hosts directly under other Activity Hosts.
Add more than one Activity Host under an Activity.
Delete a manually added Activity of a Data-Driven Exclusive Activity Host.
Toggle automatic layout of items by clicking .
Change the order and parent of Activity or Activity Host, by dragging that item in the Activity Browser. See Changing the order of nodes and Changing the parent of nodes.
You can now use the Viewport 3D node in Kanzi Studio. The Viewport 3D node enables you to render 2D nodes in a 3D scene. See Using the Viewport 3D node.
You can now use the Write Log Action to print property and message argument values. See Using Write Log action.
In the Shadow Effect 2D effect, introduced the Override Shadow Offset property that enables you to set the offset of the shadow from the object along the x and y axes. See Using the Shadow Effect 2D effect.
Introduced in the
ShaderProgram::CreateInfo
class these functions that make it easier to use uniforms with shaders that you create in application code:void addUniformAndBinding(AbstractPropertyType propertyType)
adds a uniform and the default render value binding for that uniform.void addUniformAndBinding(AbstractPropertyType propertyType, ShaderProgram::UniformTransformation transformation)
adds a uniform and the default render value binding for that uniform with the transform function that you specify.void addFixedUniform(string_view name)
adds a uniform and the default binding to a fixed uniform function with pass through transform.void addFixedUniform(string_view name, ShaderProgram::UniformTransformation transformation)
adds a uniform and the default binding to a fixed uniform function with the transform function that you specify.
You can now use SPIR-V binary shaders on OpenGL targets. See Using binary shaders.
Introduced the
getCameraNormalMatrix()
uniform binding function that gets the matrix to transform object normals to view space. See getCameraNormalMatrix.You can now use the Kanzi Engine API to create a
Mesh
from existing OpenGL buffer handles and query those handles from an existingMesh
. See Creating a mesh from native handles.In the
Mesh
class, introduced support for instancing:In
Mesh::CreateInfo
, you can now define the instance buffer.In
MeshVertexAttribute
, you can now set whether an attribute is per vertex or per instance.
The Kanzi FreeType and iType font engines now support word wrapping for Lao, Khmer, Myanmar, and Thai. Kanzi no longer requires Thai dictionary for the iType font engine to support word wrapping, but still supports it. See Customizing word wrapping in Thai text with iType font engine and Font engine dictionaries.
Added options for truncating text that does not fit in the available space of Text Block and Text Box nodes. You can now set whether you want to truncate text:
At beginning, middle, or end
Character by character or by entire words
See Wrapping and truncating text and Setting truncation in a Text Box.
In a multi-project setup you can now share between referenced projects Kanzi resource IDs that you create in the Screen nodes.
Added to the On Property Change trigger the Ignore Initial Value property. Use this property to set off a trigger only when the value of the monitored property changes after the trigger is already attached.
In the Factory Content Slider you can now set the style and size of the knob and rail. See Using the slider from the Factory Content.
You can now use multiline parameters when you run Kanzi Studio from the command line. See Setting property values using a script.
Changes¶
Kanzi now handles
SYN_DROPPED
event according to the evdev specification.To improve build time and runtime performance, changed
kanzi::variant
fromboost::variant
toboost::variant2
. To migrate your Kanzi application, see Changes to kanzi::variant.To improve build time, removed unnecessary includes and now use more forward declarations. To migrate your Kanzi application, see Changes to header files.
Removed the Cotire CMake module from the Kanzi workspace. To migrate your application, see Changes to CMake configuration files.
Added support for Python 3 for building Kanzi applications with SCons.
In the Kanzi application framework (appfw) on Android:
Changed the
KanziView.isActiveView()
method to make it available to the extending classes.Renamed input related values in
KanziNativeLibrary
to match their native counterparts. See Changes to Kanzi application framework (appfw) input related values.
Kanzi Engine on Android platform is now using
std::strtof
,std::snprintf
, andstd::to_string
instead ofKZ_USE_C99_SNPRINTF
,KZ_EMULATE_STRTOF
, andKZ_EMULATE_TO_STRING
.Updated glslang to version 12.0.0.
Updated Android, Linux, QNX, and Windows platform packages to use:
Zlib 1.2.13
FreeType 2.12.1
This version of the library introduces an improvement in smooth rasterizer performance by more than 10%. In some cases, these changes introduce subtle differences to text rendering.
HarfBuzz 5.3.1
This version of the library introduces changes to text shaping, which in some cases can cause small differences in text layout.
Updated Integrity platform packages to use:
Zlib 1.2.13
FreeType 2.12.1
Deprecated the
KzsResourceFile
class for non-Android platforms. Use the functionality provided by theReadOnlyDiskFile
class.A
Node
now knows theScreen
node to which it is attached and can get theFocusManager
andInputManager
instances from thatScreen
. See Changes to focus and input management.Deprecated the
kzuEngine
structure and moved its functionality to theApplication
,Node
,ResourceManager
, andScreen
classes. See Changes to KzuEngine.Changed the version of the kzb file format to 23.0.
Documentation¶
Added an example that shows how you can import Android resources with Kanzi Android framework (droidfw). See Android resources in Kanzi.
Added an example that shows how you can mix Android and Kanzi UIs in a Kanzi application. See Mixing Kanzi and Android UI.
Added instructions on how to use the Scroll View triggers. See Reacting to Scroll View scrolling.
Improved the instructions on different ways of activating Activities that a Data-Driven Exclusive Activity Host creates. See Data-Driven Exclusive Activity Host.
Added a topic that covers how to use the Activity Browser. See Using the Activity Browser.
Added instructions on how to enable memory mapping for loading kzb files on INTEGRITY. See Memory mapping files on INTEGRITY.
Modified these tutorials so that you can interact with the completed tutorial projects on your target device:
Notable fixes¶
ID |
Description |
Area |
---|---|---|
300598 |
Fixed the issue that caused incorrect registration of click events in 3D nodes when using camera with orthographic projection and absolute coordinates. |
Kanzi Engine |
324230 |
Fixed the issue that caused a discrepancy in multiline bidirectional text rendering between iType and FreeType font engines in Kanzi. |
Kanzi Engine |
334589 |
Fixed the issue that prevented the data context bindings from functioning properly when you target a sub-object of a root data context. For example, |
Kanzi Engine |
395640 |
Kanzi no longer avoids clearing framebuffers when compositing 2D nodes. This improves performance on tiled rendering GPUs and fixes the issue that caused Kanzi to cut out part of a character in the text of a Text Block 2D node when you enable caching for that node. See Changes to brush rendering. |
Kanzi Engine |
428214 |
Fixed performance issues in bindings that use range property types. |
Kanzi Engine |
428303 |
Fixed the issue that caused the Preview to terminate when a Text Box node shows only overflow characters. |
Kanzi Engine |
431183 |
Fixed the issue where unapplying an Apply Property Action did not correctly restore the value of the Active Activity Index property. |
Kanzi Engine |
433346 |
Fixed the issue that caused a small offset in the rendering of 3D content when you apply a 2D effect to an ancestor of a Viewport 2D node. |
Kanzi Engine |
433605 |
Fixed the issue that caused the Click trigger to not contain any message arguments when the recognition of the click is triggered by the cancellation of a higher-priority input manipulator. |
Kanzi Engine |
436687 |
In a binding expression, casting to string a text resource that you get using the |
Kanzi Engine |
437894 |
Fixed the issues in touch input handling that caused Kanzi to:
|
Kanzi Engine |
438534 |
When handling resources with dependencies, Kanzi now handles |
Kanzi Engine |
441268 |
The Performance HUD now reports correct GPU memory usage when using 32-bit mesh index buffer. |
Kanzi Engine |
442127 |
Fixed the issue that caused Kanzi Android application that consists of an overlay scope to terminate. |
Kanzi Engine |
442298 |
Fixed the issue that caused incorrect rendering of the Shadow Effect 2D effect when you set the value of the Shadow Color property to a non-black translucent color. |
Kanzi Engine |
442592 |
Fixed the issue where changes to a data source were not immediately reflected in the active Activity under a Data-Driven Exclusive Activity Host. |
Kanzi Engine |
444596 |
Fixed the issue that caused |
Kanzi Java API |
416869 |
Fixed the issue that caused the Delete Unreferenced Items window to show auto-generated cubemap texture images even though they are used by your project. |
Kanzi Studio |
420138 |
Fixed the issue that prevented deletion of root node in the Activity Browser when you open a 3D Activity or Activity Host prefab in composition. |
Kanzi Studio |
420151 |
Fixed the issue that displayed |
Kanzi Studio |
440396 |
Fixed the issue that prevented styles from working with node components other than triggers. |
Kanzi Studio |
441717 |
Fixed the issue that prevented the Activity Browser from adding a root Activity Host after you rename the Screen node. |
Kanzi Studio |
442274 |
Fixed the issue that prevented renaming of Activity Hosts in the Activity Browser. |
Kanzi Studio |
444700 |
Fixed the issue that corrupted the |
Kanzi Studio |
445492 |
The Kanzi Studio Preview now uses JAR Kanzi Engine plugins with same build configuration as that which you set for the Preview. |
Kanzi Studio |
420292 |
Fixed the issue in the Factory Content Slider that caused a one-frame delay in the rendering of the slider rail. |
Kanzi framework SDK |
421869 |
Fixed the issue that prevented the Node2D plugin example from working on Android. |
Kanzi framework SDK |