[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