AnoPlib - Animlets are not Particles library
 All Data Structures Namespaces Files Functions Variables
AnoPwavelogo1.h
Go to the documentation of this file.
00001 /* *************************************************************************
00002    @file       AnoPwavelogo1.h
00003    @project    AnoPlib
00004    @module     AnoPwavelogo1
00005    @brief      Old-style c64 wave effect
00006    @date       23.11.2010
00007    @copyright  Daniel Krajzewicz
00008    @licence    GPL
00009    @author     Daniel Krajzewicz
00010    @email      d.krajzewicz@googlemail.com
00011    ------------------------------------------------------------------
00012     AnoPlib - small "animlet" library, see http://sf.net/projects/anoplib
00013     Copyright (C) 2009-2010 Daniel Krajzewicz
00014 
00015     This program is free software: you can redistribute it and/or modify
00016     it under the terms of the GNU General Public License as published by
00017     the Free Software Foundation, either version 3 of the License, or
00018     (at your option) any later version.
00019 
00020     This program is distributed in the hope that it will be useful,
00021     but WITHOUT ANY WARRANTY; without even the implied warranty of
00022     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023     GNU General Public License for more details.
00024 
00025     You should have received a copy of the GNU General Public License
00026     along with this program.  If not, see <http://www.gnu.org/licenses/>.
00027    ------------------------------------------------------------------
00028    Remarks:
00029    ------------------------------------------------------------------
00030    ToDo:
00031  * *********************************************************************** */
00032 #ifndef ANOP_WAVELOGO1
00033 #define ANOP_WAVELOGO1
00034 
00035 
00036 /* =========================================================================
00037  * included modules
00038  * ======================================================================= */
00039 #include <AnoP.h>
00040 #include <AnoPhelpers.h>
00041 #include <GL/gl.h>
00042 
00043 
00044 /* =========================================================================
00045  * class and struct definitions
00046  * ======================================================================= */
00047 // @brief The animlet definition structure
00048 struct waveStruct {
00050     int step;
00052     double pos[2];
00053 };
00054 
00055 
00059 class AnoPwavelogo1 : public AnoP::AnoPsystem<waveStruct> {
00060 public:
00064     AnoPwavelogo1(unsigned int bufSize=10) : AnoP::AnoPsystem<waveStruct>(bufSize) { }
00065 
00066 
00069     void preRender() throw() {
00070         glMatrixMode(GL_PROJECTION);
00071         glLoadIdentity();
00072         glMatrixMode(GL_MODELVIEW);
00073         glLoadIdentity();
00074         glTranslated(-1,-1,0);
00075         glScaled(1./20, 1./20, 1.);
00076         glTranslated(0,15,0);
00077     }
00078 
00079 
00085     bool render(waveStruct &s, unsigned int timeDiff, void * const something) throw() {
00086         glPushMatrix();
00087         int off = s.step;
00088         glTranslated(s.pos[0]+AnoPhelpers::sintab[off]/100., s.pos[1]+AnoPhelpers::costab[off]/100., 0);
00089         glScaled(1./4., 1./4., 1);
00090         glColor3d(1,1,1);
00091         glBegin(GL_QUADS);
00092         glVertex3f(-1,-1,0);
00093         glVertex3f(-1,1,0);
00094         glVertex3f(1,1,0);
00095         glVertex3f(1,-1,0);
00096         glEnd();
00097         glPopMatrix();
00098         s.step++;
00099         if(s.step>359) {
00100             s.step = 0;
00101         }
00102         return true;
00103     }
00104     
00105 };
00106 
00107 #endif