/*
	GWEN
	Copyright (c) 2010 Facepunch Studios
	See license in Gwen.h
*/
 
#pragma once
#ifndef GWEN_CONTROLS_COLORCONTROLS_H
#define GWEN_CONTROLS_COLORCONTROLS_H

#include "Gwen/Controls/Base.h"
#include "Gwen/Gwen.h"
#include "Gwen/Skin.h"


namespace Gwen 
{
	namespace Controls
	{

		class GWEN_EXPORT ColorLerpBox : public Controls::Base
		{
			public:
				GWEN_CONTROL( ColorLerpBox, Controls::Base );
				virtual void Render( Gwen::Skin::Base* skin );
				Gwen::Color GetColorAtPos(int x, int y );
				void SetColor( Gwen::Color color, bool onlyHue = true );
				virtual void OnMouseMoved( int x, int y, int deltaX, int deltaY );
				virtual void OnMouseClickLeft( int x, int y, bool bDown );
				Gwen::Color GetSelectedColor();

				Event::Caller	onSelectionChanged;
			protected:
				Gwen::Point cursorPos;
				bool m_bDepressed;
				int m_Hue;
				
		};

		class GWEN_EXPORT ColorSlider : public Controls::Base
		{
			public:
				GWEN_CONTROL( ColorSlider, Controls::Base );
				virtual void Render( Gwen::Skin::Base* skin );
				virtual void OnMouseMoved( int x, int y, int deltaX, int deltaY );
				virtual void OnMouseClickLeft( int x, int y, bool bDown );
				Gwen::Color GetSelectedColor();
				Gwen::Color GetColorAtHeight(int y );
				void SetColor( Gwen::Color color );

				Event::Caller	onSelectionChanged;

			protected:
				int m_iSelectedDist;
				bool m_bDepressed;

		};
	}

}
#endif
