Functions Index :: A :: ArrayOpValue

[<< up one level]

Module:

array :: operators

Definition:

ArrayOpValue(string array, val scalar, string operation, bool "array_first")

Description:

Performs an operation of a value with all elements of an array (ie value op array[i] or array[i] op value) and returns the resulting array.

Arguments:

array: The array who's elements will be the one (defaults to left) operand of the operation.

scalar: The single value which will be the other (defaults to right) operand of the operation.

operation: The string representation of the operation to be performed between each array element and scalar. All Avisynth operations that are valid for the specific types of operands are supported ("+", "-", "*", "/", "%", "==", "!=", ">=", "<=", "<", ">", "&&", "||", etc.)

"array_first" (Optional, defaults to true): Bool flag that controls the order of the operands of the operation.

When true or ommited, the array element will be the left operand and the scalar the right one. When false, the order is reversed.

This is of importance for operations that are not symmetrical, such as for example division ("/"), modulo ("%"), certain comparison operations (">", "<", ">=", "<="), etc.

Notes and conditions on arguments relations:

1] The type of array elements and of scalar must be compatible with respect to the chosen operation.

2] When performing division with ints Avisynth truncates the result to an int. If you want float results, make either array elements or scalar a float.

Examples:

a1 = "3.2, 4.1, 3.3, -0.23"

a2 = a1.ArrayOpValue(0.4, "+") # a2 == "3.6,4.5,3.7,0.17"

a3 = a1.ArrayOpValue(4, "<=") # a3 == "true,false,true,true"

# now we will invert the order of operands

# which is the same as changing the operation to ">="

a3 = a1.ArrayOpValue(4, "<=", false) # a3 == "false,true,false,false"

# clips can also be added

ac1 = ArrayCreate(AVISource(.1.), AVISource(.2.), ...)

clp = AVISource(...)

# add clp in front of every clip contained in ac1

ac2 = ac1.ArrayOpValue(clp, false)

# add clp both in front and at end of every clip contained in ac1

ac3 = ac1.ArrayOpValue(clp, false).ArrayOpValue(clp)

 

[<< top]

 

More examples and in-depth explanation of operator functions can be found at the "Container operators" tutorial.