#pragma once

#include "Chart.hpp"

/*
   Class: BarChart

     Implements a bar chart.
     A bar chart contains a set of bar data elements, grid lines, two axes and a headline label.

     *Inherits* from <Chart>.
*/
class BarChart: public Chart {
  public:
    /*
       Constructor: BarChart

         Initializes the object.

       Parameters:

         pDataSet - Pointer to the data set object that shall be represented by the chart.
    */
    BarChart(DataSet* pDataSet);

    /*
       Destructor: ~BarChart

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


    /*
       Function: Draw

         Draws the chart. *Inherited* from <AlterableObject>.

       Parameters:

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

    /*
       Function: DrawLabels

         Draws the label assigned to the chart. *Inherited* from <AlterableObject>.

       Parameters:

         pPainter - The QPainter object that shall be used for painting.
    */
    void DrawLabels(QPainter* pPainter);

    /*
       Function: ChangePosition

         Unused function. *Inherited* from <AlterableObject>.

       Parameters:

         fDeltaLeft - Unused parameter.
         fDeltaTop - Unused parameter.
         fDeltaBottom - Unused parameter.
    */
    void ChangePosition(float fDeltaLeft, float fDeltaTop, float fDeltaBottom);

    /*
       Function: ChangeAlpha

         Unused function. *Inherited* from <AlterableObject>.

       Parameters:

         fDeltaAlpha - Unused parameter.
    */
    void ChangeAlpha(float fDeltaAlpha);
};