TextureControlFile.hh 3.51 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2011, Computer Graphics Group RWTH Aachen University         //
// All rights reserved.                                                       //
////////////////////////////////////////////////////////////////////////////////

#ifndef ACGL_OPENGL_CONTROLLER_TEXTURECONTROLFILE_HH
#define ACGL_OPENGL_CONTROLLER_TEXTURECONTROLFILE_HH

#include <ACGL/ACGL.hh>

#include <ACGL/Resource/FileController.hh>
12
#include <ACGL/OpenGL/Controller/DataControlFile.hh>
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <ACGL/OpenGL/Objects/Texture.hh>

namespace ACGL{
namespace OpenGL{

class TextureControlFile : public Resource::FileController<Texture>
{
    // ========================================================================================================= \/
    // ============================================================================================ CONSTRUCTORS \/
    // ========================================================================================================= \/
public:
    TextureControlFile(const std::string& _filename);
    TextureControlFile(const char* _filename);

    template<typename CONTROLLER>
    TextureControlFile(const CONTROLLER& _fileController)
    :   Resource::FileController<Texture>(_fileController.getFilename(), Base::Settings::the()->getFullTexturePath()),
        mDataController(new CONTROLLER(_fileController)),
        mMinFilter(0),
        mMagFilter(0),
Robert Menzel's avatar
Robert Menzel committed
33
        mAnisotropicFilter(0.0f),
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
        mWrapS(0),
        mWrapT(0),
        mWrapR(0)
    {}
    virtual ~TextureControlFile(void) {}

    // ==================================================================================================== \/
    // ============================================================================================ METHODS \/
    // ==================================================================================================== \/
public:
    inline TextureControlFile& minFilter (GLint _minFilter) { mMinFilter = _minFilter; return *this; }
    inline TextureControlFile& magFilter (GLint _magFilter) { mMagFilter = _magFilter; return *this; }
    inline TextureControlFile& anisotropicFilter (GLfloat _anisotropicFilter) { mAnisotropicFilter = _anisotropicFilter; return *this; }

    inline TextureControlFile& wrap (GLenum _wrapS, GLenum _wrapT = 0, GLenum _wrapR = 0)
    {
        mWrapS = _wrapS;
        mWrapT = _wrapT;
        mWrapR = _wrapR;
        return *this;
    }

private:
    bool load(SharedTexture& texture);

    // ===================================================================================================== \/
    // ============================================================================================ OVERRIDE \/
    // ===================================================================================================== \/
public:
    virtual SharedTexture create(void);
    virtual bool update(SharedTexture& texture);

    // =================================================================================================== \/
    // ============================================================================================ FIELDS \/
    // =================================================================================================== \/
protected:
    SharedTextureDataControlFile mDataController;
    GLint mMinFilter;
    GLint mMagFilter;
    GLfloat mAnisotropicFilter;
    GLenum  mWrapS;
    GLenum  mWrapT;
    GLenum  mWrapR;
};

} // OpenGL
} // ACGL

#endif // ACGL_OPENGL_CONTROLLER_TEXTURECONTROLFILE_HH