/************************************************************************
  			microadam.h - Copyright micha
*************************************************************************/

#ifndef MICROADAM_H
#define MICROADAM_H

#include "micro.h"

#include <iostream>

namespace seemicro
{

/**
  * class MicroAdam
  * zur Repräsentation eines micro.Adam
  */
struct MicroAdam : public Micro
{
    /**
      * Stellung des Arms relativ zu seinem Ansatzpunkt
      */
    float beta;

    /**
      * Liefert die Lnge des Arms in Pixeln
      * @param radius
      *	       Radius des Rades in Pixeln
      */
    float armlaenge(float radius);

    float armbreite(float radius);

    /**
      * Zeichnet das durch dieses Objekt in einer der Highlevel-Beschreibung
      * repräsentierte Rad in ein Bild
      *
      * @param where
      *        Ausgabebild
      * @param filled
      *        0: Umrisse zeichnen, 1: fuellen
      * @param arm_auch
      *        0: nur den Aussenring zeichnen, 1: Arm auch einzeichnen
      */
    void draw(IplImage* where, bool filled=0,
      double useColor=0, bool setzero=1, bool arm_auch=1);

    virtual Micro* clone()
    {
      return new MicroAdam(*this);
    }

};

/*
 * Überladen des 'put to'-Operators, um Ausgabe der Parameter
 * in einen Stream zu ermöglichen.
 */
std::ostream& operator<<(std::ostream& s, const MicroAdam& m);

} // namespace seemicro

#endif // MICROADAM_H

