// qcolor.sip generated by MetaSIP on Fri Feb 10 10:35:12 2012
//
// This file is part of the QtGui Python extension module.
//
// Copyright (c) 2011 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt.
// 
// This file may be used under the terms of the GNU General Public
// License versions 2.0 or 3.0 as published by the Free Software
// Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
// included in the packaging of this file.  Alternatively you may (at
// your option) use any later version of the GNU General Public
// License if such license has been publicly approved by Riverbank
// Computing Limited (or its successors, if any) and the KDE Free Qt
// Foundation. In addition, as a special exception, Riverbank gives you
// certain additional rights. These rights are described in the Riverbank
// GPL Exception version 1.1, which can be found in the file
// GPL_EXCEPTION.txt in this package.
// 
// If you are unsure which license is appropriate for your use, please
// contact the sales department at sales@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


%ModuleCode
#include <qcolor.h>
%End

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

%ConvertToTypeCode
// SIP doesn't support automatic type convertors so we explicitly allow a
// Qt::GlobalColor to be used whenever a QColor is expected.  Note that SIP
// must process QColor before QBrush so that the former's QVariant cast
// operator is applied before the latter's.

if (sipIsErr == NULL)
    return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor)) ||
            sipCanConvertToType(sipPy, sipType_QColor, SIP_NO_CONVERTORS));

if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor)))
{
    *sipCppPtr = new QColor((Qt::GlobalColor)SIPLong_AsLong(sipPy));

    return sipGetState(sipTransferObj);
}

*sipCppPtr = reinterpret_cast<QColor *>(sipConvertToType(sipPy, sipType_QColor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr));

return 0;
%End

%PickleCode
    sipRes = Py_BuildValue((char *)"iiii", sipCpp->red(), sipCpp->green(), sipCpp->blue(), sipCpp->alpha());
%End

public:
    enum Spec
    {
        Invalid,
        Rgb,
        Hsv,
        Cmyk,
%If (Qt_4_6_0 -)
        Hsl,
%End
    };

    QColor(Qt::GlobalColor color /Constrained/);
    QColor(QRgb rgb);
    QColor(const QVariant &variant) /NoDerived/;
%MethodCode
        sipCpp = new QColor(qVariantValue<QColor>(*a0));
%End

    QString name() const;
    void setNamedColor(const QString &name);
    static QStringList colorNames();
    QColor::Spec spec() const;
    int alpha() const;
    void setAlpha(int alpha);
    qreal alphaF() const;
    void setAlphaF(qreal alpha);
    int red() const;
    int green() const;
    int blue() const;
    void setRed(int red);
    void setGreen(int green);
    void setBlue(int blue);
    qreal redF() const;
    qreal greenF() const;
    qreal blueF() const;
    void setRedF(qreal red);
    void setGreenF(qreal green);
    void setBlueF(qreal blue);
    void getRgb(int *r, int *g, int *b, int *alpha = 0) const;
    void setRgb(int r, int g, int b, int alpha = 255);
    void getRgbF(qreal *r, qreal *g, qreal *b, qreal *alpha = 0) const;
    void setRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.0e+0);
    QRgb rgba() const;
    void setRgba(QRgb rgba);
    QRgb rgb() const;
    void setRgb(QRgb rgb);
    int hue() const;
    int saturation() const;
    int value() const;
    qreal hueF() const;
    qreal saturationF() const;
    qreal valueF() const;
    void getHsv(int *h, int *s, int *v, int *alpha = 0) const;
    void setHsv(int h, int s, int v, int alpha = 255);
    void getHsvF(qreal *h, qreal *s, qreal *v, qreal *alpha = 0) const;
    void setHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.0e+0);
    int cyan() const;
    int magenta() const;
    int yellow() const;
    int black() const;
    qreal cyanF() const;
    qreal magentaF() const;
    qreal yellowF() const;
    qreal blackF() const;
    void getCmyk(int *c, int *m, int *y, int *k, int *alpha = 0);
    void setCmyk(int c, int m, int y, int k, int alpha = 255);
    void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *alpha = 0);
    void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.0e+0);
    QColor toRgb() const;
    QColor toHsv() const;
    QColor toCmyk() const;
    QColor convertTo(QColor::Spec colorSpec) const;
    static QColor fromRgb(QRgb rgb);
    static QColor fromRgba(QRgb rgba);
    static QColor fromRgb(int r, int g, int b, int alpha = 255);
    static QColor fromRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.0e+0);
    static QColor fromHsv(int h, int s, int v, int alpha = 255);
    static QColor fromHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.0e+0);
    static QColor fromCmyk(int c, int m, int y, int k, int alpha = 255);
    static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.0e+0);
    QColor light(int factor = 150) const;
    QColor dark(int factor = 200) const;
    bool operator==(const QColor &c) const;
    bool operator!=(const QColor &c) const;
    QColor();
    QColor(int r, int g, int b, int alpha = 255);
    QColor(const QString &aname);
    QColor(const QColor &acolor);
    bool isValid() const;
%If (Qt_4_3_0 -)
%If (WS_X11)
    static bool allowX11ColorNames();
%End
%End
%If (Qt_4_3_0 -)
%If (WS_X11)
    static void setAllowX11ColorNames(bool enabled);
%End
%End
%If (Qt_4_3_0 -)
    QColor lighter(int factor = 150) const;
%End
%If (Qt_4_3_0 -)
    QColor darker(int factor = 200) const;
%End
%If (Qt_4_6_0 -)
    int hsvHue() const;
%End
%If (Qt_4_6_0 -)
    int hsvSaturation() const;
%End
%If (Qt_4_6_0 -)
    qreal hsvHueF() const;
%End
%If (Qt_4_6_0 -)
    qreal hsvSaturationF() const;
%End
%If (Qt_4_6_0 -)
    int hslHue() const;
%End
%If (Qt_4_6_0 -)
    int hslSaturation() const;
%End
%If (Qt_4_6_0 -)
    int lightness() const;
%End
%If (Qt_4_6_0 -)
    qreal hslHueF() const;
%End
%If (Qt_4_6_0 -)
    qreal hslSaturationF() const;
%End
%If (Qt_4_6_0 -)
    qreal lightnessF() const;
%End
%If (Qt_4_6_0 -)
    void getHsl(int *h, int *s, int *l, int *alpha = 0) const;
%End
%If (Qt_4_6_0 -)
    void setHsl(int h, int s, int l, int alpha = 255);
%End
%If (Qt_4_6_0 -)
    void getHslF(qreal *h, qreal *s, qreal *l, qreal *alpha = 0) const;
%End
%If (Qt_4_6_0 -)
    void setHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0);
%End
%If (Qt_4_6_0 -)
    QColor toHsl() const;
%End
%If (Qt_4_6_0 -)
    static QColor fromHsl(int h, int s, int l, int alpha = 255);
%End
%If (Qt_4_6_0 -)
    static QColor fromHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0);
%End
%If (Qt_4_7_0 -)
    static bool isValidColor(const QString &name);
%End
};

QDataStream &operator<<(QDataStream &, const QColor & /Constrained/);
QDataStream &operator>>(QDataStream &, QColor & /Constrained/);
