// qcolor.sip generated by MetaSIP
//
// This file is part of the QtGui Python extension module.
//
// Copyright (c) 2016 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt5.
// 
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file.  Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@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.


class QColor /TypeHintIn="Union[QColor, Qt.GlobalColor]"/
{
%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,
        Hsl,
    };

    QColor(Qt::GlobalColor color /Constrained/);
    QColor(QRgb rgb);
%If (Qt_5_6_0 -)
    QColor(QRgba64 rgba64);
%End
    QColor(const QVariant &variant /GetWrapper/) /NoDerived/;
%MethodCode
        if (a0->canConvert<QColor>())
            sipCpp = new QColor(a0->value<QColor>());
        else
            sipError = sipBadCallableArg(0, a0Wrapper);
%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);
    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;
    QColor lighter(int factor = 150) const;
    QColor darker(int factor = 200) const;
    int hsvHue() const;
    int hsvSaturation() const;
    qreal hsvHueF() const;
    qreal hsvSaturationF() const;
    int hslHue() const;
    int hslSaturation() const;
    int lightness() const;
    qreal hslHueF() const;
    qreal hslSaturationF() const;
    qreal lightnessF() const;
    void getHsl(int *h, int *s, int *l, int *alpha = 0) const;
    void setHsl(int h, int s, int l, int alpha = 255);
    void getHslF(qreal *h, qreal *s, qreal *l, qreal *alpha = 0) const;
    void setHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0);
    QColor toHsl() const;
    static QColor fromHsl(int h, int s, int l, int alpha = 255);
    static QColor fromHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0);
    static bool isValidColor(const QString &name);
%If (Qt_5_2_0 -)

    enum NameFormat
    {
        HexRgb,
        HexArgb,
    };

%End
%If (Qt_5_2_0 -)
    QString name(QColor::NameFormat format) const;
%End
%If (Qt_5_6_0 -)
    QRgba64 rgba64() const;
%End
%If (Qt_5_6_0 -)
    void setRgba64(QRgba64 rgba);
%End
%If (Qt_5_6_0 -)
    static QColor fromRgba64(ushort r, ushort g, ushort b, ushort alpha = 65535);
%End
%If (Qt_5_6_0 -)
    static QColor fromRgba64(QRgba64 rgba);
%End
};

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