All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.ggdsl.ir.aes.Aes.kt Maven / Gradle / Ivy

package org.jetbrains.kotlinx.ggdsl.ir.aes

import org.jetbrains.kotlinx.ggdsl.dsl.BindingContext

/**
 * Base interface for aesthetic attribute.
 *
 * @property name the name of this attribute
 */
sealed interface Aes {
    val name: AesName
    val context: BindingContext
}

/**
 * Interface for aesthetic attributes that can be mapped to.
 *
 * @property name the name of this attribute
 */
sealed interface MappableAes : Aes

/**
 * Interface for aesthetic attributes that can be given an explicit scale.
 *
 * @property name the name of this attribute
 */
sealed interface ScalableAes : MappableAes

/**
 * Interface for positional aesthetic attributes.
 *
 * @property name the name of this attribute
 */
sealed interface PositionalAes : MappableAes

/**
 * Ordinary positional aesthetic attribute.
 *
 * @property name the name of this attribute
 */
interface ScalablePositionalAes : PositionalAes, ScalableAes

/**
 * Positional aesthetic attribute with an implicit scale ("sub-positional").
 *
 * @property name the name of this attribute
 */
interface NonScalablePositionalAes : PositionalAes

// todo interface and data
/**
 * Non-positional aesthetic attribute.
 *
 * @property name the name of this attribute
 */
interface NonPositionalAes : Aes

/**
 * Non-positional aesthetic attribute, that can be mapped to and have an explicit scale.
 *
 * @property name the name of this attribute
 */
interface MappableNonPositionalAes : NonPositionalAes, ScalableAes

// TODO Other exists??? Todo Settable?

// TODO
interface MappableOnlyNonPositionalAes :  ScalableAes




© 2015 - 2025 Weber Informatics LLC | Privacy Policy