.. _group__a3d__graphicsbits:

##################################
Bit Field for Behavior on Graphics
##################################


   2.0


This bit field defines the behavior of a given entity, regarding its visibility, color, transparency, layer, line pattern and line width, given its position in the tree of entities. The inheritance works as follows:Following the path of a leaf in the tree of entities:


- If there are **SonHerit**\ flags, it is the lowest node in the tree which has this flag which defines the value, except if it has a **FatherHerit**\ flag.
- If there are **FatherHerit**\ flags, it is the highest node in the tree which has this flag which defines the value.
- If there is no flag, the current value is set, if any.

To determine the value of a son regarding his father, the following rules can be applied:


- If the father has a **SonHerit**\ flag and the son has a **SonHerit**\ flag too, the value is the one of the son.
- If the father has a **SonHerit**\ flag but not the son, the value is the one of the father.
- If the father does not have a **SonHerit**\ flag, but the son has one, the value is the one of the son.
- If the father does not have a **SonHerit**\ flag neither a **FatherHerit**\ flag, and the son does not have a **SonHerit**\ flag too, the value is the one of the son.
- If none of those rules can match, the value is the current one.

Following are different configurations that can be found:


-  \| This tree has no flag; each node defines its own color. This is the reference. Each following diagram is the same than this one, but with different flags on some nodes. The 'S' means that the node has a **SonHerit**\ flag, the 'F'; that the node has a **FatherHerit**\ flag.
-  \| The second leaf does not have a **SonHerit**\ flag. It takes the pattern of its father.
-  \| The second leaf does not have a **SonHerit**\ flag, and also its father. So it takes its own value of pattern.
-  \| The second node has a **FatherHerit**\ flag. Its sons don't have any flag. They take the pattern of their father.
-  \| The second node has a **FatherHerit**\ flag. The first leaf has a **SonHerit**\ flag. It takes its own pattern. But the second leaf doesn't have a **SonHerit**\ flag, so it takes the pattern of its father.
-  \| The root node has a **FatherHerit**\ flag. The entire tree takes its pattern.
-  \| The root node has a **FatherHerit**\ flag. The second node too, so it takes the pattern of its father. The first leaf has a **SonHerit**\ flag, so it takes its own pattern. But the second leaf has no flag, so it takes the pattern of its father.

**NB1:**\ The **SonHerit**\ flag overrides the **FatherHerit**\ flag.


Index
=====

.. rubric:: Preprocessor Definitions


.. rst-class:: api-xref-list


* :c:macro:`~kA3DGraphicsShow`
* :c:macro:`~kA3DGraphicsSonHeritShow`
* :c:macro:`~kA3DGraphicsFatherHeritShow`
* :c:macro:`~kA3DGraphicsSonHeritColor`
* :c:macro:`~kA3DGraphicsFatherHeritColor`
* :c:macro:`~kA3DGraphicsSonHeritLayer`
* :c:macro:`~kA3DGraphicsFatherHeritLayer`
* :c:macro:`~kA3DGraphicsSonHeritTransparency`
* :c:macro:`~kA3DGraphicsFatherHeritTransparency`
* :c:macro:`~kA3DGraphicsSonHeritLinePattern`
* :c:macro:`~kA3DGraphicsFatherHeritLinePattern`
* :c:macro:`~kA3DGraphicsSonHeritLineWidth`
* :c:macro:`~kA3DGraphicsFatherHeritLineWidth`
* :c:macro:`~kA3DGraphicsRemoved`


.. rst-class:: kind-group kind-preprocessor-definition

.. rubric:: Preprocessor Definitions
   :class: kind-group-title


.. c:macro:: kA3DGraphicsShow

      Entity is shown.
      



.. c:macro:: kA3DGraphicsSonHeritShow

      Show inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritShow

      Show inheritance.
      



.. c:macro:: kA3DGraphicsSonHeritColor

      Color / material inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritColor

      Color / material inheritance.
      



.. c:macro:: kA3DGraphicsSonHeritLayer

      Layer inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritLayer

      Layer inheritance.
      



.. c:macro:: kA3DGraphicsSonHeritTransparency

      Transparency inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritTransparency

      Transparency inheritance.
      



.. c:macro:: kA3DGraphicsSonHeritLinePattern

      Line pattern inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritLinePattern

      Line pattern inheritance.
      



.. c:macro:: kA3DGraphicsSonHeritLineWidth

      Line width inheritance.
      



.. c:macro:: kA3DGraphicsFatherHeritLineWidth

      Line width inheritance.
      



.. c:macro:: kA3DGraphicsRemoved

      Entity is removed.
      
      As a result, the entity no longer appears in the tree.
      




