// Geom. Objekte: Statische Member: drawAll (Version mit Set, Z-Wert und Nummer)
// Header für Klasse "Color"
//
// Klaus Kusche, 2020

#ifndef _COLOR_H
#define _COLOR_H

// Um wie viele Farben im Farbkreis (mit insgesamt 1530 Farben)
// wird jedesmal weitergesprungen?
const int nextColorStep = 5;

class Color
{
  public:
    Color(int r, int g, int b)  
    : mR(r), mG(g), mB(b)
    {}
    
    // Standard-Konstruktor:
    // Erzeugt ein Color-Objekt mit der "nächsten" Farbe im Farbkreis
    Color()
    : mR(makeColorVal(0)), mG(makeColorVal(1)), mB(makeColorVal(2))
    {
      sColorCounter += nextColorStep;  // im Farbkreis weiterrücken
    } 

    int getR() const { return mR; }
    int getG() const { return mG; }
    int getB() const { return mB; }

  private:   
    int mR, mG, mB;

    // Klassenweiter Zähler:
    // Zählt alle mittels Standard-Konstruktor erzeugten Objekte,
    // für die Nummer der "nächsten" Farbe im Farbkreis
    static int sColorCounter;

    // interne Methode:
    // berechnet aus sColorCounter einen Wert 0...255 für eine Farbkomponente
    // rgbNum legt fest, für welche Farbe (0...rot, 1...grün, 2...blau)
    static int makeColorVal(int rgbNum);
};

#endif
