// This is the SIP interface definition for TQColor.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt 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, or (at your option) any later
// version.
// 
// PyTQt is supplied 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
// PyTQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


%ExportedDoc
<Sect2><Title>TQColor</Title>
<Para>
The Python <Literal>==</Literal> and <Literal>!=</Literal> operators are
supported.
</Para>

<FuncSynopsis>
	<FuncDef>void <Function>getHsv</Function></FuncDef>
	<ParamDef>int *<Parameter>h</Parameter></ParamDef>
	<ParamDef>int *<Parameter>s</Parameter></ParamDef>
	<ParamDef>int *<Parameter>v</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns the <Literal>h</Literal>,
<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
</Para>

<FuncSynopsis>
	<FuncDef>void <Function>getRgb</Function></FuncDef>
	<ParamDef>int *<Parameter>r</Parameter></ParamDef>
	<ParamDef>int *<Parameter>g</Parameter></ParamDef>
	<ParamDef>int *<Parameter>b</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns the <Literal>r</Literal>,
<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
</Para>

<FuncSynopsis>
	<FuncDef>void <Function>hsv</Function></FuncDef>
	<ParamDef>int *<Parameter>h</Parameter></ParamDef>
	<ParamDef>int *<Parameter>s</Parameter></ParamDef>
	<ParamDef>int *<Parameter>v</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns the <Literal>h</Literal>,
<Literal>s</Literal> and <Literal>v</Literal> values as a tuple.
</Para>

<FuncSynopsis>
	<FuncDef>void <Function>rgb</Function></FuncDef>
	<ParamDef>int *<Parameter>r</Parameter></ParamDef>
	<ParamDef>int *<Parameter>g</Parameter></ParamDef>
	<ParamDef>int *<Parameter>b</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns the <Literal>r</Literal>,
<Literal>g</Literal> and <Literal>b</Literal> values as a tuple.
</Para>
</Sect2>
%End


%ModuleHeaderCode
#include <tqcolor.h>
%End


// Related functions.

int tqRed(TQRgb);
int tqGreen(TQRgb);
int tqBlue(TQRgb);
TQRgb tqRgb(int,int,int);
int tqGray(int,int,int);
int tqGray(TQRgb);

int tqAlpha(TQRgb);
TQRgb tqRgba(int,int,int,int);


class TQColor
{
%TypeHeaderCode
#include <tqcolor.h>
%End

public:
	enum Spec {
		Rgb,
		Hsv
	};

	TQColor();
	TQColor(int,int,int);
	TQColor(int,int,int,Spec);
	TQColor(TQRgb,uint = 0xffffffff);
	TQColor(const TQString &);
	TQColor(const char *);
	TQColor(const TQColor &);

	bool isValid() const;
	bool isDirty() const;
	TQString name() const;
	void setNamedColor(const TQString &);

	TQRgb rgb() const;
	void setRgb(int,int,int);
	void setRgb(TQRgb);
	void getRgb(int *,int *,int *) const;

	// Obsolete and is hidden anyway by the overload above.
	//void rgb(int *,int *,int *) const;

	int red() const;
	int green() const;
	int blue() const;

	void setHsv(int,int,int);

	void getHsv(int *,int *,int *) const;

	// Obsolete.
	void hsv(int *,int *,int *) const;

	TQColor light(int = 150) const;
	TQColor dark(int = 200) const;

	bool operator==(const TQColor &) const;
	bool operator!=(const TQColor &) const;

	uint alloc();
	uint pixel() const;
	static int maxColors();
	static int numBitPlanes();
	static int enterAllocContext();
	static void leaveAllocContext();
	static int currentAllocContext();
	static void destroyAllocContext(int);
	static void initialize();
	static void cleanup();
	static TQStringList colorNames();
};
