Files
orx/orx-parameters
Edwin Jakobs c31c320da1 Update documentation
Closes #78
2020-04-15 11:57:51 +02:00
..
2020-04-14 20:43:26 +02:00
2020-02-01 22:25:20 +01:00
2020-04-15 11:57:51 +02:00

orx-parameters

A collection of annotations and tools that are used to turn Kotlin properties into introspectable parameters. Parameters are highly suitable for automatically generating user interfaces, but note that this is not what orx-parameters does.

For an example (and a highly usable implementation) of generating interfaces from the annotations you are encouraged to check out orx-gui.

Currently orx-parameters facilitates the following annotations:

  • DoubleParameter for Double properties
  • IntParameter for Int properties
  • BooleanParameter for Boolean properties
  • TextParameter for String properties
  • ColorParameter for ColorRGBa properties
  • XYParameter for Vector2 properties
  • Vector2Parameter for Vector2 properties
  • Vector3Parameter for Vector3 properties
  • Vector4Parameter for Vector4 properties
  • DoubleListParameter for List<Double> properties
  • OptionParameter for Enum properties

Additionally there is an ActionParameter that can be used to annotate functions without arguments.

Annotation application

Annotations can be applied to a properties inside a class or object class.

val foo = object {
    @DoubleParameter("a double scalar", 0.0, 1.0, order = 0)
    var d = 1.0

    @IntParameter("an integer scalar", 1, 100, order = 1)
    var i = 1

    @BooleanParameter("a boolean parameter", order = 2)
    var b = false
    
    @XYParameter("an XY parameter", order = 3)
    var xy = Vector2.ZERO

    @Vector2Parameter("a Vector2 parameter", order = 4)
    var v2 = Vector2.ZERO

    @Vector3Parameter("a Vector3 parameter", order = 5)
    var v3 = Vector3.ZERO

    @Vector4Parameter("a Vector4 parameter", order = 6)
    var v4 = Vector4.ZERO

    @ActionParameter("a simple action", order = 7)
    fun actionFunction() {
        // -- 
    }
    @DoublieListParameter("a double-list parameter", order = 8)
    var dl = mutableListOf(0.0, 0.0, 0.0)

    @OptionParameter("an option parameter", order = 9)
    var option = SomeEnum.SomeValue
}

Querying parameters

Given an instance of an annotated class we can list the parameters using the extension method Any.listParameters() of our previously declared object foo

    import org.openrndr.extra.parameters.listParameters

    // ..

    val parameters = foo.listParameters()