dwss/modes/Flip.cc
2010-12-01 09:23:53 -05:00

65 lines
1.2 KiB
C++

#include <GL/gl.h>
#include <GL/glu.h>
#include "Flip.h"
#define FLIP_TICKS 1000
#define STATIC_TICKS 200
#define SPAN_Y 5
Flip::Flip()
{
m_state = WAITING;
m_span_x = 6;
m_span_y = 5;
}
bool Flip::expose (GnomeScreensaver & gs)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(m_x, m_y, 0.0);
m_logobox.draw();
glPopMatrix();
return true;
}
bool Flip::configure (GnomeScreensaver & gs)
{
glViewport(0, 0, gs.getWidth(), gs.getHeight());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, gs.getAspectRatio(), 0.01, 1000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, SPAN_Y * m_logobox.getDepth(), 0, 0, 0, 0, 1, 0);
m_span_x = (int) (m_span_y * gs.getAspectRatio()
/ (m_logobox.getWidth() / m_logobox.getDepth()) + 0.5);
m_y = 0.0f;
m_x = -(1 - (m_span_x & 0x1)) * m_logobox.getWidth() / 2.0;
m_last_ticks = gs.getTicks();
return true;
}
bool Flip::update (GnomeScreensaver & gs)
{
switch (m_state)
{
case WAITING:
break;
case FLIPPING:
break;
}
return true;
}