import { Color, Position } from '../Core';
import { LineDisplayMode } from './LineDisplayMode';
import { POI } from './POI';

/**
 * Line is the displayed and visible part of a route segment.
 */
export interface Line {
    /**
     * POI owning current Line.
     */
    readonly poi: POI;
    /**
     * Position in WGS84 coordinates of all the points defining current line.
     * @see {@link Position}
     */
    readonly positions: Position[];
    /**
     * Thickness, in meters, of current Line.
     */
    readonly thickness: number;
    /**
     * If set to false, current Line won't be rendered.
     * @defaultValue 'true'.
     */
    readonly isVisible: boolean;
    /**
     * Color of the active part of the Line.
     * @defaultValue '#0094F0'
     */
    readonly color: Color;
    /**
     * Color of the inactive part of the Line.
     * @defaultValue '#C5C5C5'
     */
    /**
     * Change the way the current Line will be rendered.
     */
    readonly displayMode: LineDisplayMode;
    /**
     * URL pointing on the texture to display.
     * Related to display mode. If display mode isn't "textured" this field won't have any effect.
     * Note that URL will be based on baseURL provided while loading the Venue.
     */
    readonly texture?: string;
    /**
     * Speed, in m.s-1, at which texture will be animated.
     * Related to display mode. If display mode isn't "textured" this field won't have any effect.
     */
    readonly animationSpeed?: number;
    /**
     * Density, in itération per meter, of the animated texture.
     * Related to display mode. If display mode isn't "textured" this field won't have any effect.
     */
    readonly textureRepeat?: number;
    /**
     * Allow to specify an elevation offset for this Line object.
     */
    readonly zOffset: number;
}
