summaryrefslogtreecommitdiffstats
path: root/digiflip
diff options
context:
space:
mode:
authorAriya Hidayat <ariya.hidayat@nokia.com>2009-09-22 15:39:47 +0200
committerAriya Hidayat <ariya.hidayat@nokia.com>2009-09-22 15:39:47 +0200
commit80fd32a99dc0dfd94611852b0fc6d1523a6e6885 (patch)
tree95de4395fd9f8028d2558b55fd985a5c0a0769ab /digiflip
parentc8fce20166e3c987d9740a87554b5d9f0656b8f6 (diff)
various devdays tweak
Diffstat (limited to 'digiflip')
-rw-r--r--digiflip/digiflip.cpp100
1 files changed, 88 insertions, 12 deletions
diff --git a/digiflip/digiflip.cpp b/digiflip/digiflip.cpp
index 7a4b362..2d9375d 100644
--- a/digiflip/digiflip.cpp
+++ b/digiflip/digiflip.cpp
@@ -30,6 +30,8 @@ class Digits: public QWidget
public:
+ int m_number;
+
enum {
Slide,
Flip,
@@ -39,13 +41,13 @@ public:
Digits(QWidget *parent)
: QWidget(parent)
, m_number(0)
- , m_transition(Slide)
+ , m_transition(Flip)
{
setAttribute(Qt::WA_OpaquePaintEvent, true);
setAttribute(Qt::WA_NoSystemBackground, true);
connect(&m_animator, SIGNAL(frameChanged(int)), SLOT(update()));
m_animator.setFrameRange(0, 100);
- m_animator.setDuration(600);
+ m_animator.setDuration(6000);
m_animator.setCurveShape(QTimeLine::EaseInOutCurve);
}
@@ -142,6 +144,8 @@ protected:
p.begin(&m_pixmap);
p.drawPixmap(0, 0, drawDigits(m_number, rect()));
p.end();
+ m_pixmap.save("pixmap.png");
+
}
void resizeEvent(QResizeEvent*) {
@@ -156,6 +160,15 @@ protected:
int pad = width() / 10;
drawFrame(&p, rect().adjusted(pad, pad, -pad, -pad));
p.drawPixmap(0, 0, m_pixmap);
+ p.end();
+
+ QPixmap bla(rect().size());
+ bla.fill(Qt::transparent);
+ p.begin(&bla);
+ drawFrame(&p, rect().adjusted(pad, pad, -pad, -pad));
+ p.drawPixmap(0, 0, m_pixmap);
+ p.end();
+ bla.save("frame.png");
}
void paintSlide() {
@@ -170,15 +183,45 @@ protected:
int y = height() * m_animator.currentFrame() / 100;
p.drawPixmap(0, y, m_lastPixmap);
p.drawPixmap(0, y - height(), m_pixmap);
+ p.end();
+
+ QPixmap bla(rect().size());
+ bla.fill(Qt::transparent);
+ p.begin(&bla);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+ p.drawPixmap(0, y, m_lastPixmap);
+ p.drawPixmap(0, y - height(), m_pixmap);
+ p.end();
+ qDebug() << m_animator.currentFrame();
+ if (y < 85) {
+ bla.save("digiflip_slide1.png");
+ }
+ if (y < 25) {
+ bla.save("digiflip_slide2.png");
+ }
}
+
void paintFlip() {
QPainter p(this);
-#if !defined(Q_OS_SYMBIAN)
- p.setRenderHint(QPainter::SmoothPixmapTransform, true);
- p.setRenderHint(QPainter::Antialiasing, true);
-#endif
- p.fillRect(rect(), Qt::black);
+ paintFlip(p);
+ p.end();
+ QPixmap pixmap(size());
+ pixmap.fill(Qt::transparent);
+ p.begin(&pixmap);
+ paintFlip(p);
+ p.end();
+ if (m_animator.currentFrame() < 30)
+ pixmap.save("digiflip_flip1.png");
+ if (m_animator.currentFrame() < 70)
+ pixmap.save("digiflip_flip2.png");
+ }
+
+ void paintFlip(QPainter &p) {
+ p.setRenderHint(QPainter::SmoothPixmapTransform, false);
+ p.setRenderHint(QPainter::Antialiasing, false);
+ //p.fillRect(rect(), Qt::black);
int hw = width() / 2;
int hh = height() / 2;
@@ -225,7 +268,6 @@ protected:
p.drawPixmap(-hw, -hh, m_pixmap);
}
-
}
void paintRotate() {
@@ -248,6 +290,39 @@ protected:
p.setTransform(transform);
p.setRenderHint(QPainter::SmoothPixmapTransform, true);
p.drawPixmap(-width() / 2, -height() / 2, pix);
+ p.end();
+
+
+ QPixmap bla(rect().size());
+ bla.fill(Qt::transparent);
+ p.begin(&bla);
+ {
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+
+ int angle1 = -180 * m_animator.currentFrame() / 100;
+ int angle2 = 180 - 180 * m_animator.currentFrame() / 100;
+ int angle = (m_animator.currentFrame() <= 50) ? angle1 : angle2;
+ QPixmap pix = (m_animator.currentFrame() <= 50) ? m_lastPixmap : m_pixmap;
+
+ QTransform transform;
+ transform.translate(width() / 2, height() / 2);
+ transform.rotate(angle, Qt::XAxis);
+
+ p.setTransform(transform);
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
+ p.drawPixmap(-width() / 2, -height() / 2, pix);
+ p.end();
+
+ if (m_animator.currentFrame() < 1) {
+ bla.save("digiflip_rotate1.png");
+ }
+ if (m_animator.currentFrame() < 40) {
+ bla.save("digiflip_rotate2.png");
+ }
+ }
}
void paintEvent(QPaintEvent *event) {
@@ -265,7 +340,6 @@ protected:
}
private:
- int m_number;
int m_transition;
QPixmap m_pixmap;
QPixmap m_lastPixmap;
@@ -289,10 +363,12 @@ public:
pal.setColor(QPalette::Window, Qt::black);
setPalette(pal);
- m_ticker.start(1000, this);
+ m_ticker.start(13000, this);
QTime t = QTime::currentTime();
m_hour->setNumber(t.hour());
m_minute->setNumber(t.minute());
+ m_hour->setNumber(13);
+ m_minute->setNumber(36-1);
updateTime();
QAction *slideAction = new QAction("&Slide", this);
@@ -315,8 +391,8 @@ public:
void updateTime() {
QTime t = QTime::currentTime();
- m_hour->flipTo(t.hour());
- m_minute->flipTo(t.minute());
+ m_hour->flipTo(13);
+ m_minute->flipTo(m_minute->m_number + 1);
QString str = t.toString("hh:mm:ss");
str.prepend(": ");
if (m_hour->transition() == Digits::Slide)