Source Code (Use browser search to find items of interest.)

Class Index

qt'QColorPicker (./qt-2.1.0/src/dialogs/qcolordialog.cpp:221)

class QColorPicker : public QFrame
{
    Q_OBJECT
public:
    QColorPicker(QWidget* parent=0, const char* name=0);
    ~QColorPicker();

public slots:
    void setCol( int h, int s );

signals:
    void newCol( int h, int s );

protected:
    QSize sizeHint() const;
    QSizePolicy sizePolicy() const;
    void drawContents(QPainter* p);
    void mouseMoveEvent( QMouseEvent * );
    void mousePressEvent( QMouseEvent * );

private:
    int hue;
    int sat;

    QPoint colPt();
    int huePt( const QPoint &pt );
    int satPt( const QPoint &pt );
    void setCol( const QPoint &pt );

    QPixmap *pix;
};


qt'QColorPicker::colPt() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:386)

QPoint QColorPicker::colPt()
{ return QPoint( (360-hue)*(pWidth-1)/360, (255-sat)*(pHeight-1)/255 ); }

qt'QColorPicker::huePt() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:388)

int QColorPicker::huePt( const QPoint &pt )
{ return 360 - pt.x()*360/(pHeight-1); }

qt'QColorPicker::satPt() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:390)

int QColorPicker::satPt( const QPoint &pt )
{ return 255 - pt.y()*255/(pWidth-1) ; }

qt'QColorPicker::setCol() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:392)

void QColorPicker::setCol( const QPoint &pt )
{ setCol( huePt(pt), satPt(pt) ); }


qt'QColorPicker::QColorPicker() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:395)

QColorPicker::QColorPicker(QWidget* parent, const char* name )
    : QFrame( parent, name )
{
    setCol( 150, 255 );

    QImage img( pHeight, pWidth, 32 );
    int x,y;
    for ( y = 0; y < pHeight; y++ )
	for ( x = 0; x < pWidth; x++ ) {
	    QPoint p( x, y );
	    img.setPixel( x, y, QColor(huePt(p), satPt(p),
				       200, QColor::Hsv).rgb() );
	}
    pix = new QPixmap;
    pix->convertFromImage(img);
    setBackgroundMode( NoBackground );
}


qt'QColorPicker::~QColorPicker() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:413)

QColorPicker::~QColorPicker()
{
    delete pix;
}


qt'QColorPicker::sizeHint() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:418)

QSize QColorPicker::sizeHint() const
{
    return QSize( pHeight + 2*frameWidth(), pWidth + 2*frameWidth() );
}


qt'QColorPicker::sizePolicy() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:423)

QSizePolicy QColorPicker::sizePolicy() const
{
    return QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
}


qt'QColorPicker::setCol() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:428)

void QColorPicker::setCol( int h, int s )
{
    int nhue = QMIN( QMAX(0,h), 360 );
    int nsat = QMIN( QMAX(0,s), 255);
    if ( nhue == hue && nsat == sat )
	return;
    QRect r( colPt(), QSize(20,20) );
    hue = nhue; sat = nsat;
    r = r.unite( QRect( colPt(), QSize(20,20) ) );
    r.moveBy( contentsRect().x()-9, contentsRect().y()-9 );
    //    update( r );
    repaint( r, FALSE );
}


qt'QColorPicker::mouseMoveEvent() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:442)

void QColorPicker::mouseMoveEvent( QMouseEvent *m )
{
    QPoint p = m->pos() - contentsRect().topLeft();
    setCol( p );
    emit newCol( hue, sat );
}


qt'QColorPicker::mousePressEvent() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:449)

void QColorPicker::mousePressEvent( QMouseEvent *m )
{
    QPoint p = m->pos() - contentsRect().topLeft();
    setCol( p );
    emit newCol( hue, sat );
}


qt'QColorPicker::drawContents() (./qt-2.1.0/src/dialogs/qcolordialog.cpp:456)

void QColorPicker::drawContents(QPainter* p)
{
    QRect r = contentsRect();

    p->drawPixmap( r.topLeft(), *pix );
    QPoint pt = colPt() + r.topLeft();
    p->setPen( QPen(black) );

    p->fillRect( pt.x()-9, pt.y(), 20, 2, black );
    p->fillRect( pt.x(), pt.y()-9, 2, 20, black );

}