/**********************************************************************
 * Copyright (c) 2019 Ericsson
 *
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License 2.0 which
 * accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 **********************************************************************/

package org.eclipse.tracecompass.tmf.core.model;

/**
 * Constants that defines different properties that can be used in
 * {@link OutputElementStyle}
 *
 * @author Simon Delisle
 * @since 5.2
 */
public final class StyleProperties {

    private StyleProperties() {
    }

    // Background

    /**
     * Background color, specified by an hex string (#rrggbb).
     * <p>
     * Default: "#000000"
     */
    public static final String BACKGROUND_COLOR = "background-color"; //$NON-NLS-1$

    /**
     * Linear gradient applied to the background color. Possible values: "true"
     * or "false".
     * <p>
     * Default: "false"
     */
    public static final String LINEAR_GRADIENT = "linear-gradient"; //$NON-NLS-1$

    /**
     * End color of the gradient, specified as an hex string (#rrggbb). The
     * start color is set with {@link #BACKGROUND_COLOR}. Used when the
     * {@link #LINEAR_GRADIENT} is true.
     * <p>
     * Default: "#ffffff"
     */
    public static final String LINEAR_GRADIENT_COLOR_END = "linear-gradient-color-end"; //$NON-NLS-1$

    /**
     * Direction of the linear gradient. Possible values:
     * {@link LinearGradientDirection}.
     * <p>
     * Default: {@link LinearGradientDirection#VERTICAL}
     */
    public static final String LINEAR_GRADIENT_DIRECTION = "linear-gradient-direction"; //$NON-NLS-1$

    /**
     * Linear gradient direction values.
     *
     * @noimplement This interface is not intended to be implemented by clients.
     */
    public interface LinearGradientDirection {
        /**
         * Horizontal (left to right)
         */
        String HORIZONTAL = "horizontal"; //$NON-NLS-1$
        /**
         * Vertical (top to bottom)
         */
        String VERTICAL = "vertical"; //$NON-NLS-1$
    }

    /**
     * Opacity level of an element between 0.0 and 1.0 (float) where 0.0 is
     * transparent and 1.0 is fully opaque.
     * <p>
     * Default: 1.0
     */
    public static final String OPACITY = "opacity"; //$NON-NLS-1$

    // Border

    /**
     * Border style as string. Possible values: {@link BorderStyle}.
     * <p>
     * Default: {@link BorderStyle#NONE}
     */
    public static final String BORDER_STYLE = "border-style"; //$NON-NLS-1$

    /**
     * Border style values.
     *
     * @noimplement This interface is not intended to be implemented by clients.
     */
    public interface BorderStyle {
        /**
         * No border
         */
        String NONE = "none"; //$NON-NLS-1$
        /**
         * Dotted border
         */
        String DOTTED = "dotted"; //$NON-NLS-1$
        /**
         * Dashed border
         */
        String DASHED = "dashed"; //$NON-NLS-1$
        /**
         * Solid border
         */
        String SOLID = "solid"; //$NON-NLS-1$
        /**
         * Double border
         */
        String DOUBLE = "double"; //$NON-NLS-1$
    }

    /**
     * Border color, specified as an hex string (#rrggbb). Used when
     * {@link #BORDER_STYLE} is other than {@link BorderStyle#NONE}.
     * <p>
     * Default: "#000000"
     */
    public static final String BORDER_COLOR = "border-color"; //$NON-NLS-1$

    /**
     * Border radius of rounded corners between 0.0 and 1.0 (float) where 0.0 is
     * not rounded and 1.0 is an arc radius equal to half the element height.
     * The radius applies to the background and to the border, if there is one.
     * <p>
     * Default: 0.5
     */
    public static final String BORDER_RADIUS = "border-radius"; //$NON-NLS-1$

    /**
     * Border width in pixels (int). Used when {@link #BORDER_STYLE} is other
     * than {@link BorderStyle#NONE}.
     * <p>
     * Default: 1
     */
    public static final String BORDER_WIDTH = "border-width"; //$NON-NLS-1$

    // Text

    /**
     * Foreground color, specified as an hex string (#rrggbb).
     * <p>
     * Default: "#000000" or, when the element has a background color, a
     * distinct color from this background color
     */
    public static final String COLOR = "color"; //$NON-NLS-1$

    /**
     * Text direction as a string. Possible values: {@link TextDirection}.
     * <p>
     * Default: @link {@link TextDirection#LTR}
     */
    public static final String TEXT_DIRECTION = "direction"; //$NON-NLS-1$

    /**
     * Text direction values.
     *
     * @noimplement This interface is not intended to be implemented by clients.
     */
    public interface TextDirection {
        /**
         * Left to right
         */
        String LTR = "ltr"; //$NON-NLS-1$
        /**
         * Right to left
         */
        String RTL = "rtl"; //$NON-NLS-1$
    }

    /**
     * Text alignment as a string. Possible values: {@link TextAlign}.
     * <p>
     * Default: {@link TextAlign#CENTER}
     */
    public static final String TEXT_ALIGN = "text-align"; //$NON-NLS-1$

    /**
     * Text alignment values.
     *
     * @noimplement This interface is not intended to be implemented by clients.
     */
    public interface TextAlign {
        /**
         * Center
         */
        String CENTER = "center"; //$NON-NLS-1$
        /**
         * Left
         */
        String LEFT = "left"; //$NON-NLS-1$
        /**
         * Right
         */
        String RIGHT = "right"; //$NON-NLS-1$
        /**
         * Justify
         */
        String JUSTIFY = "justify"; //$NON-NLS-1$
    }

    /**
     * Font family as string (ex. "sans-serif").
     * <p>
     * Default: system font
     */
    public static final String FONT_FAMILY = "font-family"; //$NON-NLS-1$

    /**
     * Font size in pixels (int), at normal zoom level.
     * <p>
     * Default: fit to element height
     */
    public static final String FONT_SIZE = "font-size"; //$NON-NLS-1$

    /**
     * Font style as a string. Possible values: {@link FontStyle}.
     * <p>
     * Default: {@link FontStyle#NORMAL}
     */
    public static final String FONT_STYLE = "font-style"; //$NON-NLS-1$

    /**
     * Font style values.
     *
     * @noimplement This interface is not intended to be implemented by clients.
     */
    public interface FontStyle {
        /**
         * Normal font
         */
        String NORMAL = "normal"; //$NON-NLS-1$
        /**
         * Italic font
         */
        String ITALIC = "italic"; //$NON-NLS-1$
        /**
         * Oblique font
         */
        String OBLIQUE = "oblique"; //$NON-NLS-1$
    }

    /**
     * Font weight as a string. Possible values: {@link FontWeight}.
     * <p>
     * Default: {@link FontWeight#NORMAL}
     */
    public static final String FONT_WEIGHT = "font-weight"; //$NON-NLS-1$

    /**
     * Font weight values.
     */
    public interface FontWeight {
        /**
         * Normal
         */
        String NORMAL = "normal"; //$NON-NLS-1$
        /**
         * Bold
         */
        String BOLD = "bold"; //$NON-NLS-1$
        /**
         * Bolder than the inherited font weight
         */
        String BOLDER = "bolder"; //$NON-NLS-1$
        /**
         * Lighter than the inherited font weight
         */
        String LIGHTER = "lighter"; //$NON-NLS-1$
    }

    // Annotation

    /**
     * Symbol type as a string. Possible values: {@link SymbolType}.
     * <p>
     * Default: @link {@link SymbolType#NONE}
     */
    public static final String SYMBOL_TYPE = "symbol-type"; //$NON-NLS-1$

    /**
     * Symbol type values.
     */
    public interface SymbolType {
        /**
         * None
         */
        String NONE = "none"; //$NON-NLS-1$
        /**
         * Diamond
         */
        String DIAMOND = "diamond"; //$NON-NLS-1$
        /**
         * Circle
         */
        String CIRCLE = "circle"; //$NON-NLS-1$
        /**
         * Square
         */
        String SQUARE = "square"; //$NON-NLS-1$
        /**
         * Triangle
         */
        String TRIANGLE = "triangle"; //$NON-NLS-1$
        /**
         * Inverted triangle
         */
        String INVERTED_TRIANGLE = "inverted-triangle"; //$NON-NLS-1$
        /**
         * Cross
         */
        String CROSS = "cross"; //$NON-NLS-1$
        /**
         * Plus
         */
        String PLUS = "plus"; //$NON-NLS-1$
    }

    // General properties

    /**
     * Height of an element, as a factor, between 0.0 and 1.0 (float), of the
     * normal element height.
     * <p>
     * Default: 1.0
     */
    public static final String HEIGHT = "height"; //$NON-NLS-1$

    /**
     * Width of an element in pixels. Not applicable to elements representing a
     * time duration.
     * <p>
     * Default: 1.0
     */
    public static final String WIDTH = "width"; //$NON-NLS-1$

    /**
     * Cursor style when pointing over an element, as a string equal to one of
     * the CSS 'cursor' property values.
     * <p>
     * Default: "auto"
     */
    public static final String CURSOR = "cursor"; //$NON-NLS-1$

    // modifiers

    /**
     * Suffix to be appended to a color style key to apply a blending color to
     * that style's color value. The value of the modifier style is a hex string
     * that includes the blending color's alpha between 0 and 255 (#rrggbbaa).
     */
    public static final String BLEND = "-blend"; //$NON-NLS-1$

    /**
     * Suffix to be appended to a numerical style key to apply a multiplication
     * factor to that style's numerical value. The value of the modifier style
     * is a positive float.
     */
    public static final String FACTOR = "-factor"; //$NON-NLS-1$

    // custom properties

    /**
     * Style group name. Can be used to indicate that some
     * {@link OutputElementStyle} are in a same group.
     * <p>
     * Default: ungrouped
     */
    public static final String STYLE_GROUP = "style-group"; //$NON-NLS-1$

    /**
     * Style name, the human-readable name of this style.
     * <p>
     * Default: style id
     */
    public static final String STYLE_NAME = "style-name"; //$NON-NLS-1$
}
