[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeplasma-addons/applets/bball
From: Enrico Ros <rosenric () dei ! unipd ! it>
Date: 2010-02-03 11:37:50
Message-ID: 1265197070.179099.8877.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1084655 by eros:
BouncingBall applet: stop painting if still and disable anti-aliasing
when moving fast (the eye won't catch it ;-)
Plus fix the Colorization button.
M +17 -11 bball.cpp
--- trunk/KDE/kdeplasma-addons/applets/bball/bball.cpp #1084654:1084655
@@ -92,8 +92,10 @@
p->translate(m_radius, m_radius);
p->rotate(360 * m_angle / 6.28);
p->translate(-m_radius, -m_radius);
- p->setRenderHint(QPainter::SmoothPixmapTransform);
- p->setRenderHint(QPainter::Antialiasing);
+ if (m_velocity.length() < 300) {
+ p->setRenderHint(QPainter::SmoothPixmapTransform);
+ p->setRenderHint(QPainter::Antialiasing);
+ }
}
p->drawPixmap(QPoint(0, 0), m_ballPixmap);
}
@@ -153,6 +155,7 @@
// reset timing
m_timer.stop();
m_time = QTime();
+ update();
// reset physics
m_velocity = QVector2D();
@@ -233,7 +236,6 @@
cg.writeEntry("OverlayColour", m_overlay_colour);
m_overlay_opacity = static_cast< int >(ui.colourizeOpacitySlider->value() * \
2.55); cg.writeEntry("OverlayOpacity", m_overlay_opacity);
- m_overlay_colour.setAlpha(m_overlay_opacity);
updateScaledBallImage();
// Physics
@@ -266,7 +268,7 @@
cg.writeEntry("AutoBounceEnabled", m_auto_bounce_enabled);
m_auto_bounce_strength = ui.autoBounceStrength->value();
cg.writeEntry ("AutoBounceStrength", m_auto_bounce_strength);
- if (m_auto_bounce_enabled)
+ if (m_auto_bounce_enabled || m_gravity > 0)
m_timer.start(25, this);
// mouse - undo the mouse clicked
@@ -282,7 +284,7 @@
// Appearance
m_image_url = cg.readEntry("ImgURL", KStandardDirs::locate("data", \
"bball/bball.svgz")); m_overlay_enabled = cg.readEntry("OverlayEnabled", false);
- m_overlay_colour = cg.readEntry("OverlayColour", QColor());
+ m_overlay_colour = cg.readEntry("OverlayColour", QColor(Qt::white));
m_overlay_opacity = cg.readEntry("OverlayOpactiy", 0);
m_ballSvg.setImagePath(m_image_url);
updateScaledBallImage();
@@ -329,7 +331,7 @@
// update velocity and position
m_velocity += QVector2D(0, (qreal)m_screenRect.height() * m_gravity * dT);
- m_velocity *= (1.0 - m_friction * dT);
+ m_velocity *= (1.0 - 2 * m_friction * dT);
m_geometry.translate((m_velocity * dT).toPointF());
// floor
@@ -371,20 +373,22 @@
collision = true;
}
+ m_angularVelocity *= (0.9999 - 2 * m_friction * dT);
m_angle += m_angularVelocity * dT;
- if (collision)
- playBoingSound();
-
// stop animation if reached bottom and still
- if (m_velocity.length() < 20.0 && m_geometry.bottom() >= m_screenRect.bottom() \
&& !m_auto_bounce_enabled) { + if (m_velocity.length() < 10.0 && \
qAbs(m_angularVelocity) < 0.1 && !m_auto_bounce_enabled) { m_timer.stop();
+ update();
return;
}
// move this and update graphics
setGeometry(m_geometry);
update();
+
+ if (collision)
+ playBoingSound();
}
void bballApplet::playBoingSound()
@@ -424,7 +428,9 @@
QPainter p(&m_ballPixmap);
p.setRenderHint(QPainter::Antialiasing, true);
p.setPen(Qt::NoPen);
- p.setBrush(m_overlay_colour);
+ QColor brush = m_overlay_colour;
+ brush.setAlpha(m_overlay_opacity);
+ p.setBrush(brush);
p.drawEllipse(QRectF(0, 0, m_radius * 2, m_radius * 2));
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic