namespace Quik.CommandMachine
{
    /// <summary>
    /// Enumeration of built-in Quik commands.
    /// </summary>
    public enum Command
    {
        #region Control Commands
        /// <summary>
        /// Invoke a function directly.
        /// </summary>
        Invoke,

        /// <summary>
        /// Begin conditional rendering segment.
        /// </summary>
        ConditionalBegin,

        /// <summary>
        /// End conditional rendering segment.
        /// </summary>
        ConditionalEnd,

        PushViewport,
        IntersectViewport,
        StoreViewport,
        PopViewport,

        PushZ,
        IncrementZ,
        AddZ,
        StoreZ,
        DecrementZ,
        PopZ,

        PushMatrix,
        StoreIdentityMatrix,
        StoreMatrix,
        PopMatrix,

        PushStyle,
        StoreStyle,
        PopStyle,
        #endregion

        #region Draw Commands
        Line,
        Bezier,
        Rectangle,
        Ellipse,
        Triangle,
        Polygon,
        Image,
        #endregion


        /// <summary>
        /// Start index for custom commands.
        /// </summary>
        CustomCommandBase = 1024,
    }
}