/** \ingroup MapComposer
 * Abstraction of composer scale bar style. Subclasses draw themselves, have the
possibility to implement custom labeling and calculate corresponding box size.
*/
class QgsScaleBarStyle
{
%TypeHeaderCode
#include "qgsscalebarstyle.h"
%End
  public:
    QgsScaleBarStyle( const QgsComposerScaleBar* bar );
    virtual ~QgsScaleBarStyle();

    /**Draws the style
     @param xOffset offset to account for centered labeling*/
    virtual void draw( QPainter* p, double xOffset = 0 ) const = 0; //to do by every subclass
    virtual void drawLabels( QPainter* p ) const; //default implementation provided
    virtual QRectF calculateBoxSize() const; //default implementation provided
    virtual QString name() const = 0; //return name of the style
    //virtual QIcon styleIcon() const = 0;
};