// This is the SIP interface definition for QRect.
//
// 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>QRect</Title>
<Para>
The Python
<Literal>&amp;</Literal>, <Literal>&amp;=</Literal>,
<Literal>|</Literal>, <Literal>|=</Literal>,
<Literal>==</Literal>, <Literal>!=</Literal>, <Literal>in</Literal> and
<Literal>__nonzero__</Literal> operators are supported.
</Para>

<FuncSynopsis>
        <FuncDef>void <Function>coords</Function></FuncDef>
        <ParamDef>int *<Parameter>x1</Parameter></ParamDef>
        <ParamDef>int *<Parameter>y1</Parameter></ParamDef>
        <ParamDef>int *<Parameter>x2</Parameter></ParamDef>
        <ParamDef>int *<Parameter>y2</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns a tuple containing the four values.
</Para>

<FuncSynopsis>
        <FuncDef>void <Function>rect</Function></FuncDef>
        <ParamDef>int *<Parameter>x</Parameter></ParamDef>
        <ParamDef>int *<Parameter>y</Parameter></ParamDef>
        <ParamDef>int *<Parameter>w</Parameter></ParamDef>
        <ParamDef>int *<Parameter>h</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes no parameters and returns a tuple containing the four values.
</Para>

<FuncSynopsis>
        <FuncDef>QCOORD &amp;<Function>rBottom</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented. (Qt v2+)
</Para>

<FuncSynopsis>
        <FuncDef>QCOORD &amp;<Function>rLeft</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented. (Qt v2+)
</Para>

<FuncSynopsis>
        <FuncDef>QCOORD &amp;<Function>rRight</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented. (Qt v2+)
</Para>

<FuncSynopsis>
        <FuncDef>QCOORD &amp;<Function>rTop</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented. (Qt v2+)
</Para>
</Sect2>
%End


class QRect
{
%TypeHeaderCode
#include <qrect.h>
%End

public:
	QRect();
	QRect(const QPoint &,const QPoint &);
	QRect(const QPoint &,const QSize &);
	QRect(int,int,int,int);

	bool isNull() const;
	bool isEmpty() const;
	bool isValid() const;
	QRect normalize() const;

	int left() const;
	int top() const;
	int right() const;
	int bottom() const;

%If (Qt_2_00 -)
//	QCOORD &rLeft();
//	QCOORD &rTop();
//	QCOORD &rRight();
//	QCOORD &rBottom();
%End

	int x() const;
	int y() const;
	void setLeft(int);
	void setTop(int);
	void setRight(int);
	void setBottom(int);
	void setX(int);
	void setY(int);

%If (Qt_3_1_0 -)
	void setTopLeft(const QPoint &);
	void setBottomRight(const QPoint &);
	void setTopRight(const QPoint &);
	void setBottomLeft(const QPoint &);
%End

	QPoint topLeft() const;
	QPoint bottomRight() const;
	QPoint topRight() const;
	QPoint bottomLeft() const;
	QPoint center() const;

	void rect(int *,int *,int *,int *) const;
	void coords(int *,int *,int *,int *) const;

%If (Qt_3_1_0 -)
	void moveLeft(int);
	void moveTop(int);
	void moveRight(int);
	void moveBottom(int);
%End
	void moveTopLeft(const QPoint &);
	void moveBottomLeft(const QPoint &);
	void moveTopRight(const QPoint &);
	void moveBottomRight(const QPoint &);
	void moveCenter(const QPoint &);
	void moveBy(int,int);

	void setRect(int,int,int,int);
	void setCoords(int,int,int,int);
%If (Qt_3_0_0 -)
	void addCoords(int,int,int,int);
%End

	QSize size() const;
	int width() const;
	int height() const;
	void setWidth(int);
	void setHeight(int);
	void setSize(const QSize &);

	QRect operator|(const QRect &) const;
	QRect operator&(const QRect &) const;
	QRect &operator|=(const QRect &);
	QRect &operator&=(const QRect &);

	int __nonzero__() const;
%MethodCode
		sipRes = sipCpp -> isValid();
%End

	bool contains(const QPoint &,bool = 0) const;

	int __contains__(const QPoint &) const;
%MethodCode
		sipRes = sipCpp -> contains(*a0);
%End

%If (Qt_3_1_0 -)
	bool contains(int,int) const;
	bool contains(int,int,bool) const;
%End
%If (Qt_2_2_0 - Qt_3_1_0)
	bool contains(int,int,bool = 0) const;
%End
	bool contains(const QRect &,bool = 0) const;

	int __contains__(const QRect &) const;
%MethodCode
		sipRes = sipCpp -> contains(*a0);
%End

	QRect unite(const QRect &) const;
	QRect intersect(const QRect &) const;
	bool intersects(const QRect &) const;

	// Qt defines the remaining operators as global, rather than part of
	// the class, but SIP doesn't support global operators.
	bool operator==(const QRect &) const;
	bool operator!=(const QRect &) const;
};
