#pragma once

#include "Transition.hpp"

/*
   Class: CompoundTransition

     *Abstract* class that implements the skeleton of a compound transition,
     i.e. a complex transition that contains several atomic transitions.

     *Inherits* from <Transition>.
*/
class CompoundTransition: public Transition {
  public:
    /*
       Constructor: CompoundTransition

         Unused constructor of abstract class.
    */
    CompoundTransition();

    /*
       Destructor: ~CompoundTransition

         Releases all allocated resources.
    */
    ~CompoundTransition();


    /*
       Function:

         

       Parameters:

         

       Returns:

         
    */
    void Update();

    /*
       Function: Draw

         *Virtual*. Draws the transition by drawing the initial chart.

       Parameters:

         pPainter - The QPainter object that shall be used for painting.
    */
    virtual void Draw(QPainter* pPainter) = 0;

    /*
       Function:

         

       Parameters:

         

       Returns:

         
    */
    bool Complete();


    /*
       Function:

         

       Parameters:

         

       Returns:

         
    */
    virtual Chart* GetActiveChart() = 0;
};