Source Code (Use browser search to find items of interest.)
Class Index
khelpcenter'KEyesWidget (./kdebase/khelpcenter/kcmhelpcenter/eyes.h:13)
class KEyesWidget : public QFrame
{
Q_OBJECT
public:
KEyesWidget( QWidget *parent=0, const char * name=0, WFlags f=0 );
~KEyesWidget();
public slots:
void lookAt( QPoint &p );
protected:
virtual void paintEvent( QPaintEvent * );
virtual void resizeEvent( QResizeEvent * );
private:
myPoint computePupil( double eyeX, QPoint mouse ) const;
void computePupils( QPoint mouse, myPoint pupils[2] ) const;
void eyeLiner( QPainter & );
void eyeBalls( QPainter & );
void eyeShape( QPainter & );
double xScale, yScale;
double xTranslate, yTranslate;
bool shapeWindow;
QPoint mouse; // old mouse position
myPoint pupil[2]; // pupil position
// defined constants
static const float eyePadding, eyeThickness,
eyeRadius, ballRadius, ballPad;
// calculated constants
static const float eyeX, eyeDiameter, irisRadius, irisDiameter,
eyesWidth, eyesHeight, ballDiameter, ballAllowed;
};
khelpcenter'KEyesWidget::KEyesWidget() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:29)
KEyesWidget::KEyesWidget( QWidget *parent, const char * name, WFlags f ) :
QFrame( parent, name/*, WType_TopLevel | WStyle_Customize | WStyle_Tool*/ )
{
setBackgroundMode( NoBackground );
resize( 150, 100 );
}
khelpcenter'KEyesWidget::~KEyesWidget() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:37)
KEyesWidget::~KEyesWidget()
{
}
khelpcenter'KEyesWidget::lookAt() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:41)
void KEyesWidget::lookAt( QPoint &p )
{
mouse = p;
}
khelpcenter'KEyesWidget::paintEvent() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:46)
void KEyesWidget::paintEvent( QPaintEvent * )
{
computePupils( mouse, pupil );
QPainter painter( this );
painter.translate( xTranslate, yTranslate );
eyeLiner( painter );
eyeBalls( painter );
}
khelpcenter'KEyesWidget::resizeEvent() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:56)
void KEyesWidget::resizeEvent( QResizeEvent * )
{
xTranslate = width() / 2.0;
yTranslate = height() / 2.0;
xScale = width() / eyesWidth;
yScale = height() / eyesHeight;
QBitmap shapeMask( width(), height() );
shapeMask.fill( color0 );
QPainter painter( &shapeMask );
painter.translate( xTranslate, yTranslate );
eyeShape( painter );
painter.end();
setMask( shapeMask );
}
khelpcenter'KEyesWidget::computePupil() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:73)
myPoint KEyesWidget::computePupil( double eye_x, QPoint mouse ) const
{
mouse -= ( geometry().topLeft() + QPoint( xTranslate, yTranslate ));
ASSERT( xScale != 0.0 );
ASSERT( yScale != 0.0 );
double mx = (double) mouse.x() / xScale - eye_x,
my = (double) mouse.y() / yScale;
// (mx, my) is the mouse position relative to the origin
myPoint ret;
if( mx == 0.0 && my == 0.0 )
{
ret.x = eye_x;
ret.y = 0.0;
} else {
double r = hypot( mx, my );
if( r <= ballAllowed )
{
ret.x = mx + eye_x;
ret.y = my;
} else {
double phi = atan2( my, mx );
ret.x = eye_x + ballAllowed * cos(phi);
ret.y = ballAllowed * sin( phi );
}
}
return ret;
}
khelpcenter'KEyesWidget::computePupils() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:106)
void KEyesWidget::computePupils( QPoint mouse, myPoint pupils[2] ) const
{
pupils[0] = computePupil( -eyeX, mouse );
pupils[1] = computePupil( +eyeX, mouse );
}
khelpcenter'KEyesWidget::eyeLiner() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:112)
void KEyesWidget::eyeLiner( QPainter &painter )
{
// black outline
painter.setPen( black );
painter.setBrush( black );
// left
painter.drawEllipse( xScale * (-eyeX - eyeRadius), -yScale * eyeRadius,
xScale * eyeDiameter, yScale * eyeDiameter );
// right
painter.drawEllipse( xScale * (eyeX - eyeRadius), -yScale * eyeRadius,
xScale * eyeDiameter, yScale * eyeDiameter );
// white iris
painter.setPen( white );
painter.setBrush( white );
// left
painter.drawEllipse( xScale * (-eyeX - irisRadius), -yScale * irisRadius,
xScale * irisDiameter, yScale * irisDiameter );
// right
painter.drawEllipse( xScale * (eyeX - irisRadius), -yScale * irisRadius,
xScale * irisDiameter, yScale * irisDiameter );
}
khelpcenter'KEyesWidget::eyeBalls() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:135)
void KEyesWidget::eyeBalls( QPainter &painter )
{
painter.setPen( black );
painter.setBrush( black );
// left
painter.drawEllipse( xScale * (pupil[0].x - ballRadius), yScale * (pupil[0].y - ballRadius),
xScale * ballDiameter, yScale * ballDiameter );
// right
painter.drawEllipse( xScale * (pupil[1].x - ballRadius), yScale * (pupil[1].y - ballRadius),
xScale * ballDiameter, yScale * ballDiameter );
}
khelpcenter'KEyesWidget::eyeShape() (./kdebase/khelpcenter/kcmhelpcenter/eyes.cpp:148)
void KEyesWidget::eyeShape( QPainter &painter )
{
painter.setPen( color1 );
painter.setBrush( color1 );
painter.drawEllipse( xScale * (eyeX - eyeRadius), -yScale * eyeRadius,
xScale * eyeDiameter, yScale * eyeDiameter );
painter.drawEllipse( xScale * (-eyeX - eyeRadius), -yScale * eyeRadius,
xScale * eyeDiameter, yScale * eyeDiameter );
}