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

org.jetbrains.kotlinx.ggdsl.dsl.Aes.kt Maven / Gradle / Ivy

/*
* Copyright 2020-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/

package org.jetbrains.kotlinx.ggdsl.dsl

import org.jetbrains.kotlinx.ggdsl.dsl.internal.BindingContext
import org.jetbrains.kotlinx.ggdsl.ir.aes.AesName

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

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

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

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

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

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

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

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

// TODO Other exists??? Todo Settable?
/*
// TODO
interface MappableOnlyNonPositionalAes :  ScalableAes

 */




© 2015 - 2025 Weber Informatics LLC | Privacy Policy