+++ /dev/null
-
-/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
-**] All rights reserved.
-*
-* vi:ts=4 sw=4 tw=75
-*
-* Distributable under the terms and conditions of the 2-clause BSD license;
-* see the file COPYING for a complete text of the license.
-*
-**************************************************************************/
-
-#ifndef _MOOF_TEXTURE_HH_
-#define _MOOF_TEXTURE_HH_
-
-/**
- * \file texture.hh
- * Image-loading and OpenGL texture loading.
- */
-
-#include <string>
-
-#include <boost/shared_ptr.hpp>
-
-#include <moof/image.hh>
-#include <moof/opengl.hh>
-
-
-namespace moof {
-
-
-class texture;
-typedef boost::shared_ptr<texture> texture_ptr;
-
-
-class texture : public image
-{
-public:
-
- static const int no_tile = -1;
-
- /**
- * Possible orientations for texture coordinates.
- */
- typedef enum
- {
- normal = 0, ///< Normal orientation.
- flip = 1, ///< Flip over a horizontal axis.
- reverse = 2, ///< Flip over a vertical axis.
- flip_and_reverse = 3 ///< Flip over both.
- } orientation;
-
-
- static texture_ptr alloc(const std::string& name)
- {
- return texture_ptr(new texture(name));
- }
-
- explicit texture(const std::string& name);
-
- void bind() const;
- GLuint object() const;
-
- static void reset_binding();
-
- void min_filter(GLuint filter);
- void mag_filter(GLuint filter);
- void wrap_s(GLuint wrap);
- void wrap_t(GLuint wrap);
-
-
- /**
- * Calculate texture coordinates for a tile at a certain index. Tiles
- * are indexed start with zero as the to-left tile and moving across,
- * then down.
- * \param index The tile index.
- * \param coords An array of scalars where the texture coordinates will
- * be stored after this call. The first coordinate (u,v) will be in
- * the first two places and so on until all four coordinates are
- * stored, therefore requiring enough room for an array of eight
- * scalars. The winding of the coordinates is always counter-clockwise
- * (the GL default).
- * \return True if index is valid, false otherwise.
- */
- bool tile_coordinates(int index, scalar coords[8]) const;
-
- /**
- * This version let's you specify an orientation that will be reflected
- * in the texture coordinates. This allows you to easily map a texture
- * backwards or upside-down.
- * \param what The orientation; can be flip, reverse, or
- * flip_and_reverse.
- * \return True if index is valid, false otherwise.
- */
- bool tile_coordinates(int index, scalar coords[8], orientation what) const;
-
-
-private:
-
- class impl;
- boost::shared_ptr<impl> impl_;
-};
-
-
-} // namespace moof
-
-#endif // _MOOF_TEXTURE_HH_
-