Kanzi  3.9.9
Kanzi Engine C++ API
Property

Properties provide the means to specify and examine the state, appearance, and behavior of nodes. More...

Collaboration diagram for Property:

Classes

class  kanzi::AbstractIndexedRange
 Abstract indexed range interface. More...
 
class  kanzi::AbstractPropertyNotificationHandler
 Abstract property notification handler. More...
 
class  kanzi::AbstractPropertyType
 AbstractPropertyType is a homogeneous property type handle to an existing property type. More...
 
class  kanzi::AbstractPropertyTypeDescriptor
 AbstractPropertyTypeDescriptor is used internally by the property type system to manage property types. More...
 
class  kanzi::AbstractRange
 Abstract range interface. More...
 
class  kanzi::AbstractRangeIterator
 Abstract range iterator interface. More...
 
class  kanzi::AbstractRangeLocation
 Location into a range. More...
 
class  kanzi::ClassPropertyDefaultValue< TDataType >
 ClassPropertyDefaultValue is a helper for installing property values as class metadata. More...
 
class  kanzi::Constraints
 Contains property types of Constraints. More...
 
class  kanzi::PropertyObject
 PropertyObject is the base class that supports setting and retrieving of property types. More...
 
class  kanzi::PropertyType< Type, typename >
 An instance of a PropertyType represents a single property type in the Kanzi property system. More...
 
class  kanzi::PropertyType< Type, typename enable_if< is_enum< Type >::value >::type >
 Specialization for PropertyType for enums. See PropertyType. More...
 

Typedefs

using kanzi::PropertyTypeRegistry = unordered_map< string_view, AbstractPropertyTypeDescriptor * >
 Alias for map of all property types. More...
 

Enumerations

enum  kanzi::PropertyNotificationReason { kanzi::PropertyNotificationReasonChanged, kanzi::PropertyNotificationReasonRemoved }
 Property notification reason. More...
 
enum  kanzi::PropertyTypeChangeFlag {
  kanzi::PropertyTypeChangeFlagFinalTransformation, kanzi::PropertyTypeChangeFlagMeasure, kanzi::PropertyTypeChangeFlagParentMeasure, kanzi::PropertyTypeChangeFlagArrange,
  kanzi::PropertyTypeChangeFlagRender, kanzi::PropertyTypeChangeFlagDraw, kanzi::PropertyTypeChangeFlagConstraint
}
 Each property type can have one or more change flags that indicate the effects of changing the value of that property. More...
 
enum  kanzi::PropertyValuePrecedence { kanzi::PropertyValuePrecedenceClass, kanzi::PropertyValuePrecedenceStyle, kanzi::PropertyValuePrecedenceLocal }
 Property value precedence. More...
 

Functions

PropertyTypeRegistry::const_iterator kanzi::beginPropertyTypes ()
 Get iterator to the beginning of registry of all property types. More...
 
PropertyTypeRegistry::const_iterator kanzi::endPropertyTypes ()
 Get iterator to the end of registry of all property types. More...
 

Detailed Description

Properties provide the means to specify and examine the state, appearance, and behavior of nodes.

For example, a property can define a color, indicate whether a button is pressed, or specify the alignment of an item. Properties provide a uniform way to access data of Kanzi nodes, so that many Kanzi subsystems can manipulate the data.That way you can, for example, animate property values, provide bindings between property values, and monitor property value changes.

Typedef Documentation

using kanzi::PropertyTypeRegistry = typedef unordered_map<string_view, AbstractPropertyTypeDescriptor*>

Alias for map of all property types.

Enumeration Type Documentation

Each property type can have one or more change flags that indicate the effects of changing the value of that property.

For example, when the Text property of a Text Block node changes, Kanzi must recalculate the layout of that Text Block, which is why the TextConcept::TextProperty has the PropertyTypeChangeFlagMeasure.

Enumerator
PropertyTypeChangeFlagFinalTransformation 

Use this flag for a property type that affects the final transformation of a node and its descendants.

For a 2D node, this flag causes Kanzi to:

  1. Run Node2D::updateRender on the node and its descendants. This updates the transformation of the nodes.
  2. Draw all nodes.

For a 3D node, this flag causes Kanzi to:

  1. Update the transformation of the node and its descendants.
  2. Draw all nodes.

For example, Node::ActualWidthProperty, Node2D::RenderTransformationProperty, and Node3D::RenderTransformationProperty use this flag.

PropertyTypeChangeFlagMeasure 

Use this flag for a property type that affects the size of the node as reported by the node itself, or the size and position of the node with respect to other nodes.

For a 2D node, this flag causes Kanzi to:

  1. Run Node2D::measure on the node.
  2. If the measured size of the node changed, run Node2D::measure on the parent of the node.
  3. If the measured size of the parent node changed, run Node2D::measure on the parent of the parent node, and so on.
  4. Run Node2D::arrange and Node2D::updateRender on the node, all the changed ancestor nodes, and their descendants. If the transform of a node changed, Node2D::updateRender recalculates the transformations.
  5. Draw all nodes.

For a 3D node, this flag causes Kanzi to:

  1. Run Node3D::measure on the node.
  2. If the measured size of the node changed, run Node3D::measure on the parent of the node.
  3. If the measured size of the parent node changed, run Node3D::measure on the parent of the parent node, and so on.
  4. Run Node3D::arrange on the node, all the changed ancestor nodes, and their descendants.
  5. Recalculate the transformations of the nodes.
  6. Draw all nodes.

For example, properties that set the size, margins, padding, and alignment of a node, use this flag.

PropertyTypeChangeFlagParentMeasure 

Use this flag for a property type that affects the layout of the parent node of a node.

This flag causes Kanzi to set the PropertyTypeChangeFlagMeasure flag on the parent of the node.

For example, the DockLayoutConcept::SideProperty, GridLayoutConcept::ColumnProperty, and GridLayoutConcept::RowProperty use this flag.

PropertyTypeChangeFlagArrange 

Use this flag for a property type that affects the need to arrange the layout of a node.

For a 2D node, this flag causes Kanzi to:

  1. Run Node2D::arrange on the node and its descendants.
  2. Run Node2D::updateRender on the node and its descendants. If the transform of a node changed, Node2D::updateRender recalculates the transformation.
  3. Draw all nodes.

For a 3D node, this flag causes Kanzi to:

  1. Run Node3D::arrange on the node and its descendants.
  2. Recalculate the transformations of the node and its descendants.
  3. Draw all nodes.

All property types that have the PropertyTypeChangeFlagMeasure set, run the arrange phase on those nodes whose measurements changed.

PropertyTypeChangeFlagRender 

Use this flag for a property type that changes the rendering parameters of a 2D node but does not affect the layout.

For a 2D node, this flag causes Kanzi to:

  1. Run Node2D::updateRender on the node and its descendants. If the transform of a node changed, Node2D::updateRender recalculates the transformation.
  2. Draw all nodes.

For a property type that changes the rendering parameters of a 3D node but does not affect the layout, use PropertyTypeChangeFlagDraw instead of PropertyTypeChangeFlagRender.

For example, these properties use the PropertyTypeChangeFlagRender flag:

PropertyTypeChangeFlagDraw 

Use this flag for a property type that affects the drawing of a node.

This flag causes Kanzi to draw all nodes.

For example, most material properties use this flag.

PropertyTypeChangeFlagConstraint 

Property type with this flag informs that constraints are in use.

Property notification reason.

Enumerator
PropertyNotificationReasonChanged 

The property value was modified.

PropertyNotificationReasonRemoved 

The property value was removed.

Property value precedence.

Enumerator
PropertyValuePrecedenceClass 

Property value precedence used by the class default values.

PropertyValuePrecedenceStyle 

Property value precedence used by styles.

PropertyValuePrecedenceLocal 

Property value precedence used by local values.

Function Documentation

PropertyTypeRegistry::const_iterator kanzi::beginPropertyTypes ( )

Get iterator to the beginning of registry of all property types.

Returns
A const iterator to the beginning of property type registry.
PropertyTypeRegistry::const_iterator kanzi::endPropertyTypes ( )

Get iterator to the end of registry of all property types.

Returns
A const iterator to the end of property type registry.