// This is the SIP interface definition for QColor.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyQt.
// 
// This copy of PyQt 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.
// 
// PyQt 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
// PyQt; 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>QColor</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 <qcolor.h>
%End


%If (- Qt_2_00)
// The global colours.

QColor color0;
QColor color1;
QColor black;
QColor white;
QColor darkGray;
QColor gray;
QColor lightGray;
QColor red;
QColor green;
QColor blue;
QColor cyan;
QColor magenta;
QColor yellow;
QColor darkRed;
QColor darkGreen;
QColor darkBlue;
QColor darkCyan;
QColor darkMagenta;
QColor darkYellow;
%End


// Related functions.

int qRed(QRgb);
int qGreen(QRgb);
int qBlue(QRgb);
QRgb qRgb(int,int,int);
int qGray(int,int,int);
int qGray(QRgb);

%If (Qt_2_00 -)
int qAlpha(QRgb);
QRgb qRgba(int,int,int,int);
%End


class QColor
{
%TypeHeaderCode
#include <qcolor.h>
%End

public:
	enum Spec {
		Rgb,
		Hsv
	};

	QColor();
	QColor(int,int,int);
	QColor(int,int,int,Spec);
	QColor(QRgb,uint = 0xffffffff);
%If (Qt_2_00 -)
	QColor(const QString &);
%End
	QColor(const char *);
	QColor(const QColor &);

	bool isValid() const;
	bool isDirty() const;
%If (- Qt_2_00)
	void setNamedColor(const char *);
%End
%If (Qt_2_1_0 -)
	QString name() const;
%End
%If (Qt_2_00 -)
	void setNamedColor(const QString &);
%End

	QRgb rgb() const;
	void setRgb(int,int,int);
	void setRgb(QRgb);
%If (Qt_3_2_0 -)
	void getRgb(int *,int *,int *) const;
%End

	// 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);

%If (Qt_3_2_0 -)
	void getHsv(int *,int *,int *) const;
%End
%If (- Qt_3_2_0)
	void getHsv(int &,int &,int &) const;
%End

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

	QColor light(int = 150) const;
	QColor dark(int = 200) const;
%If (- Qt_3_0_0)
	static bool lazyAlloc();
	static void setLazyAlloc(bool);
%End

	bool operator==(const QColor &) const;
	bool operator!=(const QColor &) 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);
%If (Qt_3_0_0 -)
%End
	static void initialize();
	static void cleanup();
%If (Qt_3_2_0 -)
	static QStringList colorNames();
%End
};
