user: Describe Freestyle Predicates (freestyle.predicates) from the Blender manual or Python API, including usage steps and snippets.

assistant: # Freestyle Predicates (freestyle.predicates)

This module contains predicates operating on vertices (0D elements)
and polylines (1D elements). It is also intended to be a collection
of examples for predicate definition in Python.

User-defined predicates inherit one of the following base classes,
depending on the object type (0D or 1D) to operate on and the arity
(unary or binary):

- `freestyle.types.BinaryPredicate0D`
- `freestyle.types.BinaryPredicate1D`
- `freestyle.types.UnaryPredicate0D`
- `freestyle.types.UnaryPredicate1D`

*class* freestyle.predicates.AndBP1D

*class* freestyle.predicates.AndUP1D

*class* freestyle.predicates.ContourUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `ContourUP1D`

    __call__(*inter*)
    :   Returns true if the Interface1D is a contour. An Interface1D is a
        contour if it is bordered by a different shape on each of its sides.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if the Interface1D is a contour, false otherwise.

        Return type:
        :   bool

*class* freestyle.predicates.DensityLowerThanUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `DensityLowerThanUP1D`

    __init__(*threshold*, *sigma=2.0*)
    :   Builds a DensityLowerThanUP1D object.

        Parameters:
        :   - **threshold** (*float*) – The value of the threshold density. Any Interface1D
              having a density lower than this threshold will match.
            - **sigma** (*float*) – The sigma value defining the density evaluation window
              size used in the `freestyle.functions.DensityF0D` functor.

    __call__(*inter*)
    :   Returns true if the density evaluated for the Interface1D is less
        than a user-defined density value.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if the density is lower than a threshold.

        Return type:
        :   bool

*class* freestyle.predicates.EqualToChainingTimeStampUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `freestyle.types.EqualToChainingTimeStampUP1D`

    __init__(*ts*)
    :   Builds a EqualToChainingTimeStampUP1D object.

        Parameters:
        :   **ts** (*int*) – A time stamp value.

    __call__(*inter*)
    :   Returns true if the Interface1D’s time stamp is equal to a certain
        user-defined value.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if the time stamp is equal to a user-defined value.

        Return type:
        :   bool

*class* freestyle.predicates.EqualToTimeStampUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `EqualToTimeStampUP1D`

    __init__(*ts*)
    :   Builds a EqualToTimeStampUP1D object.

        Parameters:
        :   **ts** (*int*) – A time stamp value.

    __call__(*inter*)
    :   Returns true if the Interface1D’s time stamp is equal to a certain
        user-defined value.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if the time stamp is equal to a user-defined value.

        Return type:
        :   bool

*class* freestyle.predicates.ExternalContourUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `ExternalContourUP1D`

    __call__(*inter*)
    :   Returns true if the Interface1D is an external contour.
        An Interface1D is an external contour if it is bordered by no shape on
        one of its sides.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if the Interface1D is an external contour, false
            otherwise.

        Return type:
        :   bool

*class* freestyle.predicates.FalseBP1D
:   Class hierarchy: `freestyle.types.BinaryPredicate1D` > `FalseBP1D`

    __call__(*inter1*, *inter2*)
    :   Always returns false.

        Parameters:
        :   - **inter1** (`freestyle.types.Interface1D`) – The first Interface1D object.
            - **inter2** (`freestyle.types.Interface1D`) – The second Interface1D object.

        Returns:
        :   False.

        Return type:
        :   bool

*class* freestyle.predicates.FalseUP0D
:   Class hierarchy: `freestyle.types.UnaryPredicate0D` > `FalseUP0D`

    __call__(*it*)
    :   Always returns false.

        Parameters:
        :   **it** (`freestyle.types.Interface0DIterator`) – An Interface0DIterator object.

        Returns:
        :   False.

        Return type:
        :   bool

*class* freestyle.predicates.FalseUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `FalseUP1D`

    __call__(*inter*)
    :   Always returns false.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   False.

        Return type:
        :   bool

*class* freestyle.predicates.Length2DBP1D
:   Class hierarchy: `freestyle.types.BinaryPredicate1D` > `Length2DBP1D`

    __call__(*inter1*, *inter2*)
    :   Returns true if the 2D length of inter1 is less than the 2D length
        of inter2.

        Parameters:
        :   - **inter1** (`freestyle.types.Interface1D`) – The first Interface1D object.
            - **inter2** (`freestyle.types.Interface1D`) – The second Interface1D object.

        Returns:
        :   True or false.

        Return type:
        :   bool

*class* freestyle.predicates.MaterialBP1D
:   Checks whether the two supplied ViewEdges have the same material.

*class* freestyle.predicates.NotBP1D

*class* freestyle.predicates.NotUP1D

*class* freestyle.predicates.ObjectNamesUP1D

*class* freestyle.predicates.OrBP1D

*class* freestyle.predicates.OrUP1D

*class* freestyle.predicates.QuantitativeInvisibilityRangeUP1D

*class* freestyle.predicates.QuantitativeInvisibilityUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `QuantitativeInvisibilityUP1D`

    __init__(*qi=0*)
    :   Builds a QuantitativeInvisibilityUP1D object.

        Parameters:
        :   **qi** (*int*) – The Quantitative Invisibility you want the Interface1D to
            have.

    __call__(*inter*)
    :   Returns true if the Quantitative Invisibility evaluated at an
        Interface1D, using the
        `freestyle.functions.QuantitativeInvisibilityF1D` functor,
        equals a certain user-defined value.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if Quantitative Invisibility equals a user-defined
            value.

        Return type:
        :   bool

*class* freestyle.predicates.SameShapeIdBP1D
:   Class hierarchy: `freestyle.types.BinaryPredicate1D` > `SameShapeIdBP1D`

    __call__(*inter1*, *inter2*)
    :   Returns true if inter1 and inter2 belong to the same shape.

        Parameters:
        :   - **inter1** (`freestyle.types.Interface1D`) – The first Interface1D object.
            - **inter2** (`freestyle.types.Interface1D`) – The second Interface1D object.

        Returns:
        :   True or false.

        Return type:
        :   bool

*class* freestyle.predicates.ShapeUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `ShapeUP1D`

    __init__(*first*, *second=0*)
    :   Builds a ShapeUP1D object.

        Parameters:
        :   - **first** (*int*) – The first Id component.
            - **second** (*int*) – The second Id component.

    __call__(*inter*)
    :   Returns true if the shape to which the Interface1D belongs to has the
        same `freestyle.types.Id` as the one specified by the user.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True if Interface1D belongs to the shape of the
            user-specified Id.

        Return type:
        :   bool

*class* freestyle.predicates.TrueBP1D
:   Class hierarchy: `freestyle.types.BinaryPredicate1D` > `TrueBP1D`

    __call__(*inter1*, *inter2*)
    :   Always returns true.

        Parameters:
        :   - **inter1** (`freestyle.types.Interface1D`) – The first Interface1D object.
            - **inter2** (`freestyle.types.Interface1D`) – The second Interface1D object.

        Returns:
        :   True.

        Return type:
        :   bool

*class* freestyle.predicates.TrueUP0D
:   Class hierarchy: `freestyle.types.UnaryPredicate0D` > `TrueUP0D`

    __call__(*it*)
    :   Always returns true.

        Parameters:
        :   **it** (`freestyle.types.Interface0DIterator`) – An Interface0DIterator object.

        Returns:
        :   True.

        Return type:
        :   bool

*class* freestyle.predicates.TrueUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `TrueUP1D`

    __call__(*inter*)
    :   Always returns true.

        Parameters:
        :   **inter** (`freestyle.types.Interface1D`) – An Interface1D object.

        Returns:
        :   True.

        Return type:
        :   bool

*class* freestyle.predicates.ViewMapGradientNormBP1D
:   Class hierarchy: `freestyle.types.BinaryPredicate1D` > `ViewMapGradientNormBP1D`

    __init__(*level*, *integration_type=IntegrationType.MEAN*, *sampling=2.0*)
    :   Builds a ViewMapGradientNormBP1D object.

        Parameters:
        :   - **level** (*int*) – The level of the pyramid from which the pixel must be
              read.
            - **integration_type** (`freestyle.types.IntegrationType`) – The integration method used to compute a single value
              from a set of values.
            - **sampling** (*float*) – The resolution used to sample the chain:
              GetViewMapGradientNormF0D is evaluated at each sample point and
              the result is obtained by combining the resulting values into a
              single one, following the method specified by integration_type.

    __call__(*inter1*, *inter2*)
    :   Returns true if the evaluation of the Gradient norm Function is
        higher for inter1 than for inter2.

        Parameters:
        :   - **inter1** (`freestyle.types.Interface1D`) – The first Interface1D object.
            - **inter2** (`freestyle.types.Interface1D`) – The second Interface1D object.

        Returns:
        :   True or false.

        Return type:
        :   bool

*class* freestyle.predicates.WithinImageBoundaryUP1D
:   Class hierarchy: `freestyle.types.UnaryPredicate1D` > `WithinImageBoundaryUP1D`

    __init__(*xmin*, *ymin*, *xmax*, *ymax*)
    :   Builds an WithinImageBoundaryUP1D object.

        Parameters:
        :   - **xmin** (*float*) – X lower bound of the image boundary.
            - **ymin** (*float*) – Y lower bound of the image boundary.
            - **xmax** (*float*) – X upper bound of the image boundary.
            - **ymax** (*float*) – Y upper bound of the image boundary.

    __call__(*inter*)
    :   Returns true if the Interface1D intersects with image boundary.

*class* freestyle.predicates.pyBackTVertexUP0D
:   Check whether an Interface0DIterator references a TVertex and is
    the one that is hidden (inferred from the context).

*class* freestyle.predicates.pyClosedCurveUP1D

*class* freestyle.predicates.pyDensityFunctorUP1D

*class* freestyle.predicates.pyDensityUP1D

*class* freestyle.predicates.pyDensityVariableSigmaUP1D

*class* freestyle.predicates.pyHighDensityAnisotropyUP1D

*class* freestyle.predicates.pyHighDirectionalViewMapDensityUP1D

*class* freestyle.predicates.pyHighSteerableViewMapDensityUP1D

*class* freestyle.predicates.pyHighViewMapDensityUP1D

*class* freestyle.predicates.pyHighViewMapGradientNormUP1D

*class* freestyle.predicates.pyHigherCurvature2DAngleUP0D

*class* freestyle.predicates.pyHigherLengthUP1D

*class* freestyle.predicates.pyHigherNumberOfTurnsUP1D

*class* freestyle.predicates.pyIsInOccludersListUP1D

*class* freestyle.predicates.pyIsOccludedByIdListUP1D

*class* freestyle.predicates.pyIsOccludedByItselfUP1D

*class* freestyle.predicates.pyIsOccludedByUP1D

*class* freestyle.predicates.pyLengthBP1D

*class* freestyle.predicates.pyLowDirectionalViewMapDensityUP1D

*class* freestyle.predicates.pyLowSteerableViewMapDensityUP1D

*class* freestyle.predicates.pyNFirstUP1D

*class* freestyle.predicates.pyNatureBP1D

*class* freestyle.predicates.pyNatureUP1D

*class* freestyle.predicates.pyParameterUP0D

*class* freestyle.predicates.pyParameterUP0DGoodOne

*class* freestyle.predicates.pyProjectedXBP1D

*class* freestyle.predicates.pyProjectedYBP1D

*class* freestyle.predicates.pyShapeIdListUP1D

*class* freestyle.predicates.pyShapeIdUP1D

*class* freestyle.predicates.pyShuffleBP1D

*class* freestyle.predicates.pySilhouetteFirstBP1D

*class* freestyle.predicates.pyUEqualsUP0D

*class* freestyle.predicates.pyVertexNatureUP0D

*class* freestyle.predicates.pyViewMapGradientNormBP1D

*class* freestyle.predicates.pyZBP1D

*class* freestyle.predicates.pyZDiscontinuityBP1D

*class* freestyle.predicates.pyZSmallerUP1D