/*File Name: Color.h
  Author: Betti Österholz ; Date: 13.08.2003
  System: C++
  
  This is header of the Basisclass of all Vector objects


  Copyright (C) 2004  Betti Österholz

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, June 1991, of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef ___COLOR_h__
#define ___COLOR_h__

#include "Vector.h"




class Color:public Vector
{
private:

public:
	Color();
	//standart constructor
	//makes a blank object with 3 components with each depth of 256(RGB)

	Color(unsigned int noc);
	//parameter constructor
	//makes a color vector object with noc components all values set to 0
	//the depth of the color component i is given by the i'th component of
	//the unsigned int array dp wich has noc components(eg.: if dp[1]=10
	//the Component[1] con return values from 0 til 9)
	//pre: the number of components to produce and the depth of each component

	Color(const Color& col);
	//copy constructor
	//makes a color vector object with the same values as the given color
	//vector
	//pre: the color vector col to copied

	unsigned long getTimeNeed() const;
	//to get a idea how long the object need to evaluate
	//post: a number for how much time the object need to evaluate

	virtual Color* copy();
	//copy this object(means all, even the objects in it)
	//post: a pointer to the copy of this object

	virtual std::string classnameOf() const;
	//returns the classname of this object as a string
	//post: the classname of this object as a string

	Color* copyValue() const;
	//returns a Color vector with all Components as values set to the values 
	//that are actual in the values and variables of this Color vector rounded to int
	//post: a Color vector with all Components as values set to the values 
	//that are actual in the values and variables of this Color vector rounded to int

};

#endif
