/*
 *
 *	ChartGradient.h
 *
 *	Written by Cédric Moonen (cedric_moonen@hotmail.com)
 *
 *
 *
 *	This code may be used for any non-commercial and commercial purposes in a compiled form.
 *	The code may be redistributed as long as it remains unmodified and providing that the 
 *	author name and this disclaimer remain intact. The sources can be modified WITH the author 
 *	consent only.
 *	
 *	This code is provided without any garanties. I cannot be held responsible for the damage or
 *	the loss of time it causes. Use it at your own risks
 *
 *	An e-mail to notify me that you are using this code is appreciated also.
 *
 *
 */

#pragma once

//! Types of gradients that can be used
enum EGradientType
{
	//! A simple horizontal gradient (from the first color to the second)
	gtHorizontal,
	//! A simple Vertical gradient (from the first color to the second)
	gtVertical,
	//! A double horizontal gradient (first color to second and back to first)
	gtHorizontalDouble,
	//! A double vertical gradient (first color to second and back to first)
	gtVerticalDouble
};

//! Helper class to draw gradient.
/**
	It only contains a static function to draw the gradient. This is
	mainly used internally.
**/
class CChartGradient
{
public:
	//! Constructor
	CChartGradient();
	//! Destructor
	~CChartGradient();

	//! Draws a gradient between two colors inside a rectangle.
	/**
		@param pDC
			The device context with which to draw.
		@param GradientRect
			The rectangle in which to draw the gradient
		@param Color1
			The first gradient color
		@param Color2
			The second gradient color
		@param GradientType
			The type of gradient to use in the rectangle
	**/
	static void DrawGradient(CDC* pDC, const CRect& GradientRect, COLORREF Color1, 
							 COLORREF Color2, EGradientType GradientType);
};
