============================================== Kanzi 3.7 release notes - August 23, 2019 ============================================== New features ------------ * Activities. Activity system allows you to define structure of the UI of your application and implement UI navigation. * Render pass prefabs. Introduced render pass prefabs which you can use to create render pass trees that define how Kanzi renders 3D content in your project. You can customize and reuse render pass prefabs in your application. * Bindings: - Introduced To Source bindings, which enable you to push a property value to another node or render pass. - Added support for bindings in render passes. - You can now use the GetCurrentValue binding function to get the current value of the property that you want to bind. Feature improvements -------------------- * Changed the bindings interface: - Split the interface to bindings (AbstractBinding) and binding runtimes (AbstractBindingRuntime). - Binding source (BindingSource) and binding target (BindingTarget) now work as separate objects. They implement reading and writing to objects, data sources, and messages. You can read a binding source from direct values or resources. * Made these improvements and changes to focus management: - There are now these types of focus scopes: Group, Fence, Modal and Popup. Use the Focus Scope Type property (FocusManager::FocusScopeTypeProperty) to set the type of focus scope. As a result of this change, the FocusManager::FocusScopeProperty is now deprecated. - Added the DirectionalFocusNavigationReason so that you can distinguish the focus chain navigation (Tab and backtab) from the directional focus navigation (up, down, left, right). - The getScopeFocusedNode() function now only returns the last logical focus node of a focus scope. This can be a node nested in a focus scope node, if the nested focus scope has Logical Focus property set. - The setScopeFocusedNode() function now sets the logical focus node of a focus scope. This function works also on nested scopes. - When you now enable the Logical Focus property (Node::LogicalFocusProperty) on a node, you make sure that the node is the only logical focus node in the focus scope to which it belongs. - The Node::trySetActiveFocus() function now returns the node or its child node that is focused. - When you use the Next Focus Node and Previous Focus Node properties (FocusManager::NextFocusNodePathProperty and FocusManager::PreviousFocusNodePathProperty) to override the focus chain navigation routing, Kanzi takes the override into account only after the focus chain navigation leaves that focus scope. * Made these changes to the InputManipulator class: - Implemented support for the StateCanceled and StateDelayed input manipulator states during touch or mouse input sequence. - The InputManipulator::cancel() function now cancels an outstanding gesture and InputManipulator::onCancel() function reacts on gesture cancellation. - Added these messages to input manipulators that notify about gesture cancellation: - DragAndDropManipulator::CanceledMessage - LongPressManipulator::LongPressCancelMessage - MultiClickManipulator::CanceledMesasge - PanManipulator::CanceledMessage - PinchManipulator::CanceledMessage * Made these changes to the glyph, font, and text: - Added the FontManager class. Use this class to set the current font rasterizer engine, create font, access font loaders, and access the glyph cache manager. - Added the Hyphenate property (TextBlockConcept::HyphenateProperty) to enable you to configure hyphenation of text in Text Block nodes. - Word wrapping is now disabled by default. To create multi-line text in Text Block nodes, add and enable the Word Wrap (TextBlockConcept::WordWrapProperty) property. - Converted these classes to C++: - Font - iTypeFont - FreeTypeFont - TextFormat - TextLayouter - TextLayout - GlyphCache - GlyphCacheManager * Converted these Kanzi Engine classes to C++: - Plane - Quaternion - Ray - Spline * Added to the ResourceManager functions that enable you to retrieve handles of loader threads, so that application code can adjust its settings. Resource manager creates all its loader threads during application startup and does not add or delete loader threads during the rest of application runtime, except during shutdown. * Improved the workflow for creating Kanzi applications for Android: - You can now use Android Studio and the Gradle build system to build and deploy Kanzi applications to Android. - In Edit > User Preferences > Advanced > Open Build Environment Configuration you can now set the ANDROID_HOME and JAVA_HOME environment variables, which you need to deploy applications to Android devices. * You can now configure anti-aliasing for the Kanzi Studio Preview. * The Kanzi Studio Preview no longer uses the deprecated legacy kzb format. To use the deprecated legacy kzb format, in the Project > Properties set the Preview Kzb Version property. * Added the Hover property (Node::HoverProperty). Kanzi updates the Hover property for hit testable nodes and their parent nodes to indicate whether a node is the foremost node under the cursor. * In the Composition Target Render Pass the Resolve Immediately property is now enabled by default. * You can now configure graphics initialization for your Kanzi application. * Improved the consistency of the syntax of the metadata attributes for setting how to show Kanzi Engine plugin custom types in Kanzi Studio. * In the Kanzi Studio plugin interface you can now use the IUserPreferences interface to store project-independent settings for your Kanzi Studio window plugins. * Several Kanzi Studio usability improvements that help you get things done in less time: - In the Project you can now use Ctrl+H to quick-hide Page and Page Host nodes. - You can now set the tunneling message handlers in Kanzi Studio. - When you clean up your Kanzi Studio project, to avoid deleting the prefab templates that are used by Kanzi Engine application code, you can now enable the Is Used By Code property. Changes ------- * Added support for Visual Studio 2017. Kanzi no longer supports Visual Studio 2013. * Kanzi now requires C++14. * Added support for Android x86_64. * Updated libjpeg to version 9c. * Updated FBX SDK to version 2019.2. * Updated the Kanzi license terms. See KANZI SOFTWARE LICENSE TERMS. You can find the complete list of changes in Kanzi 3.7 in Kanzi documentation > Release notes and migration guides.