[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3890 - in trunk/pingus/src: . display
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3890 - in trunk/pingus/src: . display |
Date: |
Mon, 21 Jul 2008 20:33:10 +0200 |
Author: grumbel
Date: 2008-07-21 20:33:09 +0200 (Mon, 21 Jul 2008)
New Revision: 3890
Modified:
trunk/pingus/src/display/framebuffer_surface.hpp
trunk/pingus/src/display/opengl_framebuffer_surface_impl.cpp
trunk/pingus/src/display/opengl_framebuffer_surface_impl.hpp
trunk/pingus/src/display/sdl_framebuffer_surface_impl.cpp
trunk/pingus/src/display/sdl_framebuffer_surface_impl.hpp
trunk/pingus/src/sprite.cpp
trunk/pingus/src/sprite.hpp
trunk/pingus/src/sprite_impl.cpp
trunk/pingus/src/sprite_impl.hpp
Log:
Added a to_surface() call
Modified: trunk/pingus/src/display/framebuffer_surface.hpp
===================================================================
--- trunk/pingus/src/display/framebuffer_surface.hpp 2008-07-21 17:21:46 UTC
(rev 3889)
+++ trunk/pingus/src/display/framebuffer_surface.hpp 2008-07-21 18:33:09 UTC
(rev 3890)
@@ -18,6 +18,7 @@
#define HEADER_FRAMEBUFFER_SURFACE_HPP
#include <boost/smart_ptr.hpp>
+#include "surface.hpp"
#include "../math/size.hpp"
class FramebufferSurfaceImpl
@@ -28,6 +29,7 @@
virtual int get_width() const =0;
virtual int get_height() const =0;
+ virtual Surface to_surface() const =0;
};
/** */
@@ -48,6 +50,7 @@
operator bool() const { return impl.get() != 0; }
+ Surface to_surface() const { return impl->to_surface(); }
private:
boost::shared_ptr<FramebufferSurfaceImpl> impl;
};
Modified: trunk/pingus/src/display/opengl_framebuffer_surface_impl.cpp
===================================================================
--- trunk/pingus/src/display/opengl_framebuffer_surface_impl.cpp
2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/display/opengl_framebuffer_surface_impl.cpp
2008-07-21 18:33:09 UTC (rev 3890)
@@ -76,5 +76,11 @@
// Unbind the texture
glBindTexture(GL_TEXTURE_2D, 0);
}
+
+Surface
+OpenGLFramebufferSurfaceImpl::to_surface() const
+{
+ return Surface();
+}
/* EOF */
Modified: trunk/pingus/src/display/opengl_framebuffer_surface_impl.hpp
===================================================================
--- trunk/pingus/src/display/opengl_framebuffer_surface_impl.hpp
2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/display/opengl_framebuffer_surface_impl.hpp
2008-07-21 18:33:09 UTC (rev 3890)
@@ -44,6 +44,8 @@
GLuint get_handle() const { return handle; }
Size get_texture_size() const { return texture_size; }
Size get_size() const { return size; }
+
+ Surface to_surface() const;
};
#endif
Modified: trunk/pingus/src/display/sdl_framebuffer_surface_impl.cpp
===================================================================
--- trunk/pingus/src/display/sdl_framebuffer_surface_impl.cpp 2008-07-21
17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/display/sdl_framebuffer_surface_impl.cpp 2008-07-21
18:33:09 UTC (rev 3890)
@@ -29,4 +29,28 @@
SDL_FreeSurface(surface);
}
-/* EOF */
+Surface
+SDLFramebufferSurfaceImpl::to_surface() const
+{
+ // Convert the surface to a format usable for the Blitter code
+ SDL_Surface* convert;
+ if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
+ {
+ convert = SDL_CreateRGBSurface(SDL_SWSURFACE,
+ surface->w, surface->h, 32,
+ 0xff000000, 0x00ff0000, 0x0000ff00,
0x000000ff);
+ }
+ else
+ {
+ convert = SDL_CreateRGBSurface(SDL_SWSURFACE,
+ surface->w, surface->h, 32,
+ 0x000000ff, 0x0000ff00, 0x00ff0000,
0xff000000);
+ }
+
+ SDL_SetAlpha(surface, 0, 0); // FIXME: Do we have to reset this?
+ SDL_BlitSurface(surface, 0, convert, 0);
+
+ return Surface(surface);
+}
+
+ /* EOF */
Modified: trunk/pingus/src/display/sdl_framebuffer_surface_impl.hpp
===================================================================
--- trunk/pingus/src/display/sdl_framebuffer_surface_impl.hpp 2008-07-21
17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/display/sdl_framebuffer_surface_impl.hpp 2008-07-21
18:33:09 UTC (rev 3890)
@@ -34,6 +34,8 @@
int get_height() const { return surface->h; }
SDL_Surface* get_surface() const { return surface; }
+
+ Surface to_surface() const;
};
#endif
Modified: trunk/pingus/src/sprite.cpp
===================================================================
--- trunk/pingus/src/sprite.cpp 2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/sprite.cpp 2008-07-21 18:33:09 UTC (rev 3890)
@@ -204,5 +204,14 @@
impl->offset = calc_origin(origin, impl->frame_size) - Vector2i(x, y);
}
}
+
+Surface
+Sprite::to_surface() const
+{
+ if (impl.get())
+ return impl->to_surface();
+ else
+ return Surface();
+}
/* EOF */
Modified: trunk/pingus/src/sprite.hpp
===================================================================
--- trunk/pingus/src/sprite.hpp 2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/sprite.hpp 2008-07-21 18:33:09 UTC (rev 3890)
@@ -60,6 +60,8 @@
void finish();
operator bool();
+ Surface to_surface() const;
+
private:
boost::shared_ptr<SpriteImpl> impl;
};
Modified: trunk/pingus/src/sprite_impl.cpp
===================================================================
--- trunk/pingus/src/sprite_impl.cpp 2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/sprite_impl.cpp 2008-07-21 18:33:09 UTC (rev 3890)
@@ -128,5 +128,11 @@
{
finished = true;
}
+
+Surface
+SpriteImpl::to_surface() const
+{
+ return framebuffer_surface.to_surface();
+}
/* EOF */
Modified: trunk/pingus/src/sprite_impl.hpp
===================================================================
--- trunk/pingus/src/sprite_impl.hpp 2008-07-21 17:21:46 UTC (rev 3889)
+++ trunk/pingus/src/sprite_impl.hpp 2008-07-21 18:33:09 UTC (rev 3890)
@@ -57,6 +57,8 @@
void restart();
void finish();
+
+ Surface to_surface() const;
};
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3890 - in trunk/pingus/src: . display,
grumbel at BerliOS <=