00001 #include "fade.h"
00002
00007 #include <glt/glu.h>
00008 #include <glt/rgb.h>
00009 #include <glt/error.h>
00010
00011 GltFadeViewport::GltFadeViewport()
00012 : _border(false), _borderColor(black)
00013 {
00014 color().alpha() = 0.0;
00015 }
00016
00017 GltFadeViewport::~GltFadeViewport()
00018 {
00019 }
00020
00021 bool &GltFadeViewport::border() { return _border; }
00022 GltColor &GltFadeViewport::borderColor() { return _borderColor; }
00023
00024 void
00025 GltFadeViewport::draw() const
00026 {
00027 GLERROR
00028
00029 glMatrixMode(GL_MODELVIEW);
00030 glPushMatrix();
00031 glLoadIdentity();
00032 glMatrixMode(GL_PROJECTION);
00033 glPushMatrix();
00034 glLoadIdentity();
00035
00036
00037
00038
00039 GltViewport viewport(true);
00040
00041 gluOrtho2D(0,viewport.width(),0,viewport.height());
00042
00043 glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT);
00044
00045 glDisable(GL_CULL_FACE);
00046 glDisable(GL_LIGHTING);
00047 glDisable(GL_DEPTH_TEST);
00048 glDepthMask(GL_FALSE);
00049
00050
00051
00052 if (color().alpha()!=0.0)
00053 {
00054 glEnable(GL_BLEND);
00055 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00056 color().glColor();
00057 viewport.drawQuad();
00058 }
00059
00060 if (_border)
00061 {
00062 glDisable(GL_BLEND);
00063 _borderColor.glColor();
00064 viewport.drawLines();
00065 }
00066
00067 glPopAttrib();
00068
00069 glPopMatrix();
00070 glMatrixMode(GL_MODELVIEW);
00071 glPopMatrix();
00072
00073 GLERROR
00074 }