From 122952f13c7d06d0c9d2b5c1ad2f904751d78833 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 13 Oct 2011 15:28:27 -0400 Subject: [PATCH] Pedestal mode: just a floating, spinning logo so far --- modes/Pedestal.cc | 67 +++++++++++++++++++++++++++++++++++++++++++++++ modes/Pedestal.h | 24 +++++++++++++++++ src/dwss.cc | 3 ++- 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 modes/Pedestal.cc create mode 100644 modes/Pedestal.h diff --git a/modes/Pedestal.cc b/modes/Pedestal.cc new file mode 100644 index 0000000..37894f6 --- /dev/null +++ b/modes/Pedestal.cc @@ -0,0 +1,67 @@ + +#include +#include +#include +#include +#include + +#include +#include + +#include "Pedestal.h" + +Pedestal::Pedestal() +{ + m_last_ticks = 0; + srand(time(NULL) + getpid()); +} + +Pedestal::~Pedestal() +{ +} + +bool Pedestal::expose (GnomeScreensaver & gs) +{ + if (m_last_ticks == 0) + { + m_last_ticks = gs.getTicks(); + m_start_ticks = m_last_ticks; + } + uint64_t ticks = gs.getTicks(); + int elapsed = ticks - m_last_ticks; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + glRotatef((ticks - m_start_ticks) * 0.1, 0, 0, 1); + + glRotatef(90.0, 1, 0, 0); + m_logobox.draw(); + + glPopMatrix(); + + m_last_ticks = ticks; + + return true; +} + +bool Pedestal::configure (GnomeScreensaver & gs) +{ + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60.0, gs.getAspectRatio() / gs.getNumMonitors(), + 0.01, 1000.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(0, -18, 4, 0, 0, 0, 0, 0, 1); + + glViewport(0, 0, gs.getWidth(), gs.getHeight()); + + return true; +} + +bool Pedestal::update (GnomeScreensaver & gs) +{ + return true; +} diff --git a/modes/Pedestal.h b/modes/Pedestal.h new file mode 100644 index 0000000..bde5a0b --- /dev/null +++ b/modes/Pedestal.h @@ -0,0 +1,24 @@ + +#ifndef PEDESTAL_H +#define PEDESTAL_H + +#include "LogoBox.h" +#include "Mode.h" +#include "GnomeScreensaver.h" + +class Pedestal : public Mode +{ + public: + Pedestal(); + ~Pedestal(); + bool expose (GnomeScreensaver & gs); + bool configure (GnomeScreensaver & gs); + bool update (GnomeScreensaver & gs); + protected: + LogoBox m_logobox; + uint64_t m_last_ticks; + uint64_t m_start_ticks; +}; + +#endif /* PEDESTAL_H */ + diff --git a/src/dwss.cc b/src/dwss.cc index f515de7..eae0e1a 100644 --- a/src/dwss.cc +++ b/src/dwss.cc @@ -35,8 +35,9 @@ static Mode *getMode(GnomeScreensaver & gs) #if 0 return new Starfield(gs); return new Spin(); -#endif return new Tunnel(); +#endif + return new Pedestal(); } int main (int argc, char *argv[])