Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

WavyPicture Class Reference

Inheritance diagram for WavyPicture:

Inheritance graph
[legend]
Collaboration diagram for WavyPicture:

Collaboration graph
[legend]

Detailed Description

Wavy picture at fixed screen position.

Definition at line 9 of file WavyPicture.h.

Public Member Functions

 WavyPicture (const Path &file, const V2 &loc)
 Load surface.
void setWamp (float amplitude)
void setWperiode (float periode)
void setWspeed (float speed)
virtual void drawOn (SDL_Surface *screen)
 Blit entire surface to [x,y].


Constructor & Destructor Documentation

WavyPicture::WavyPicture const Path file,
const V2 loc
 

Load surface.

Default is no waves.

Definition at line 20 of file WavyPicture.cpp.

00021     : Picture(file, loc)
00022 {
00023     m_amp = 0;
00024     m_periode = m_surface->w;
00025     m_speed = 0;
00026 }


Member Function Documentation

void WavyPicture::drawOn SDL_Surface *  screen  )  [virtual]
 

Blit entire surface to [x,y].

Do vertical waves with phase shift.

Reimplemented from Picture.

Definition at line 33 of file WavyPicture.cpp.

00034 {
00035     if (m_amp == 0) {
00036         Picture::drawOn(screen);
00037         return;
00038     }
00039 
00040     //NOTE: Wamp = Wamp_in_orig/2.0
00041     //NOTE: Wspeed = 1.0/Wspd_in_orig
00042     SDL_Rect dest_rect;
00043     SDL_Rect line_rect;
00044     line_rect.w = m_surface->w;
00045     line_rect.h = 1;
00046     SDL_Rect pad;
00047     pad.h = 1;
00048 
00049     float shift = TimerAgent::agent()->getCycles() * m_speed;
00050 
00051     for (int py = 0; py < m_surface->h; ++py) {
00052         //NOTE: C99 has lrintf and sinf
00053         Sint16 shiftX = static_cast<Sint16>(0.5 +
00054                 m_amp * sin(py / m_periode + shift));
00055         line_rect.x = shiftX;
00056         line_rect.y = py;
00057         dest_rect.x = m_loc.getX();
00058         dest_rect.y = m_loc.getY() + py;
00059         SDL_BlitSurface(m_surface, &line_rect, screen, &dest_rect);
00060 
00061         pad.x = (shiftX < 0) ? 0 : m_surface->w - shiftX;
00062         pad.y = py;
00063         pad.w = abs(shiftX);
00064         dest_rect.x = m_loc.getX() + pad.x;
00065         dest_rect.y = m_loc.getY() + py;
00066         SDL_BlitSurface(m_surface, &pad, screen, &dest_rect);
00067     }
00068 }

void WavyPicture::setWamp float  amplitude  )  [inline]
 

Definition at line 16 of file WavyPicture.h.

00016 { m_amp = amplitude; }

void WavyPicture::setWperiode float  periode  )  [inline]
 

Definition at line 17 of file WavyPicture.h.

00017 { m_periode = periode; }

void WavyPicture::setWspeed float  speed  )  [inline]
 

Definition at line 18 of file WavyPicture.h.

00018 { m_speed = speed; }


The documentation for this class was generated from the following files:
Generated on Wed Jun 1 09:57:13 2005 for Fish Fillets - Next Generation by  doxygen 1.4.2