#pragma once
#include <vector>
#include "SharedMethods.h"

using namespace std;

// Struct to hold the color data in
typedef struct RGBA {
	unsigned int red;
	unsigned int green;
	unsigned int blue;
	unsigned int alpha;
} RGBA;

// Class for dealing with color gradients, mainly for the terrain and blend mapping
class ColorGradient
{
public:
	ColorGradient(float min, float max, vector<RGBA> colorSteps);
	~ColorGradient();

	// Get the RGBA value at the give point 
	RGBA GetRGBAValue(float inputValue);

private:
	float _minValue;
	float _maxValue;

	// Method for interpolating the color between each step
	RGBA Interpolate(RGBA a, RGBA b, float pointValue);

	// Vector to hold the color steps in for the gradient
	vector<RGBA> _colorSteps;
};

