diff options
| author | pixel <pixel> | 2003-10-05 19:14:35 +0000 | 
|---|---|---|
| committer | pixel <pixel> | 2003-10-05 19:14:35 +0000 | 
| commit | 5b14b34d6e11611fb395e3cffaf888bcca0f3661 (patch) | |
| tree | e02a79f056e1212169c0a030683bb59e1134c2dd | |
| parent | 6860d41236baf506aaf3ecdc49131f55c8e341be (diff) | |
Changes of the month
| -rw-r--r-- | configure.ac | 1 | ||||
| -rw-r--r-- | include/glsprite.h | 1 | ||||
| -rw-r--r-- | lib/glsprite.cc | 37 | ||||
| -rw-r--r-- | src/test.cc | 22 | 
4 files changed, 55 insertions, 6 deletions
| diff --git a/configure.ac b/configure.ac index dd59ccd..91643d2 100644 --- a/configure.ac +++ b/configure.ac @@ -105,4 +105,3 @@ if test _"$gmakepath" = _; then  else      echo configure complete, now type \'gmake\'  fi -	
\ No newline at end of file diff --git a/include/glsprite.h b/include/glsprite.h index a7b2bfd..77d0d7f 100644 --- a/include/glsprite.h +++ b/include/glsprite.h @@ -15,6 +15,7 @@ namespace mogltk {  	  glSprite(Uint8 *, int, int);  	  virtual ~glSprite();  	virtual void draw(int, int, ColorP = WHITE); +	virtual void drawrotate(int, int, double, ColorP = WHITE);      };  }; diff --git a/lib/glsprite.cc b/lib/glsprite.cc index 478c0ef..18df7eb 100644 --- a/lib/glsprite.cc +++ b/lib/glsprite.cc @@ -35,3 +35,40 @@ void mogltk::glSprite::draw(int dx, int dy, ColorP c) {      if (!was2D)  	mogltk::engine::glbase_o->Leave2DMode();  } + +void mogltk::glSprite::drawrotate(int cx, int cy, double a, ColorP c) { +    bool was2D; +     +    int sx, sy; +     +    sx = GetSX() / 2; +    sy = GetSY() / 2; +     +    was2D = mogltk::engine::glbase_o->is2D(); +     +    if (!was2D) +	mogltk::engine::glbase_o->Enter2DMode(); + +    glMatrixMode(GL_MODELVIEW); +    glPushMatrix(); +    glRotated(a, 0, 0, 1); +    glTranslated(cx, cy, 0); +     +    glMatrixMode(GL_TEXTURE); +    glRotated(a, 0, 0, 1); +     +    c.Bind(); + +    Bind(); +    glBegin(GL_TRIANGLE_STRIP); +    glTexCoord2i(GetPX()          , GetPY()          ); glVertex2i(        - sx,         - sy); +    glTexCoord2i(GetPX() + GetSX(), GetPY()          ); glVertex2i(GetSX() - sx,         - sy); +    glTexCoord2i(GetPX()          , GetPY() + GetSY()); glVertex2i(        - sx, GetSY() - sy); +    glTexCoord2i(GetPX() + GetSX(), GetPY() + GetSY()); glVertex2i(GetSX() - sx, GetSY() - sy); +    glEnd(); +     +    glPopMatrix(); + +    if (!was2D) +	mogltk::engine::glbase_o->Leave2DMode(); +} diff --git a/src/test.cc b/src/test.cc index 9003cab..ec00bfe 100644 --- a/src/test.cc +++ b/src/test.cc @@ -28,10 +28,10 @@ virtual int startup() throw (GeneralException) {      new Archive("datas.paq");  #if 1 -    mogltk::base * gl = new mogltk::glbase(); -    mogltk::shape * sh = new mogltk::glshape(); -    mogltk::font * font = new mogltk::glfont(&Input("font-2.bin")); -    mogltk::Sprite * s = new mogltk::glSprite(&Input("cursor.rgba"), 25, 25); +    mogltk::glbase * gl = new mogltk::glbase(); +    mogltk::glshape * sh = new mogltk::glshape(); +    mogltk::glfont * font = new mogltk::glfont(&Input("font-2.bin")); +    mogltk::glSprite * s = new mogltk::glSprite(&Input("cursor.rgba"), 25, 25);  #else      mogltk::base * gl = new mogltk::base();      mogltk::shape * sh = new mogltk::shape(); @@ -90,8 +90,20 @@ virtual int startup() throw (GeneralException) {  	font->printf("my: %i\n", mogltk::engine::mouseY());  	font->printf("t: %.2fs\n", (double) SDL_GetTicks() / 1000); -	s->draw(mogltk::engine::mouseX() - 8, mogltk::engine::mouseY() - 6); +	double sx, sy, l, a; +	sx = mogltk::engine::mouseX() - 320; +	sy = mogltk::engine::mouseY() - 240; +	l = sqrt(sx * sx + sy * sy); +	sx /= l; +	sy /= l; +	a = acos(sx); +	if (sy < 0) +	    a = -a; +	     +	font->printf("a: %.2f\n", a);  	sh->line(320, 240, mogltk::engine::mouseX(), mogltk::engine::mouseY()); +	s->drawrotate(320, 240, a); +	s->draw(mogltk::engine::mouseX() - 8, mogltk::engine::mouseY() - 6);  	gl->Leave2DMode(); | 
