00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef TEXTURE_HPP
00024
#define TEXTURE_HPP
00025
00026
#include <vrj/Draw/OGL/GlContextData.h>
00027
#include "ColorDataDefs.hpp"
00028
00029
#include "Common.hpp"
00030
00031
namespace vrvis
00032 {
00033
00036 class Texture
00037 {
00038
00039
00040
public:
00041
00042
00044
00046
Texture(
const int cOriginX,
00047
const int cOriginY,
00048
const int cWidth,
00049
const int cHeight,
00050
const int cMaxValidX,
00051
const int cMaxValidY,
00052
const ColorDataMap& crColorDataMap);
00053
00055
~Texture(
void);
00056
00058
00060
00062
int getOriginX(
void)
const;
00064
int getOriginY(
void)
const;
00065
00067
int getSizeX(
void)
const;
00069
int getSizeY(
void)
const;
00070
00072
int getMaxValidX(
void)
const;
00074
int getMaxValidY(
void)
const;
00075
00077
double getLowerLimit(
void)
const;
00079
double getUpperLimit(
void)
const;
00080
00082
ushort*
getTexData(
void)
const;
00083
00085
void getTexCoords(
float& rMinX,
float& rMaxX,
float& rMinY,
float& rMaxY);
00086
00088
00090
00092
void setTexCoords(
const float cMinX,
00093
const float cMaxX,
00094
const float cMinY,
00095
const float cMaxY);
00096
00098
void setLimits(
const double cLowerLimit,
const double cUpperLimit);
00099
00101
00103
00105
void fill(
void);
00107
void createGLTexture(
void);
00108
00110
00112
00114
void calculateTextureData(
void);
00116
void rebuildGLTexture(
int offsetX = 0,
00117
int offsetY = 0,
00118
int width = -1,
00119
int height = -1);
00120
00122
00124
00126
void drawTexturedQuad(
const float cDrawUnitX,
const float cDrawUnitY);
00127
00129
00130
00132
static int getMaxTexSize(
void);
00133
00134
00135
00136
private:
00137
00138
00139
00141
friend class Input;
00142
00143
00144
00146
static void setMaxTexSize(
int maxTexSize);
00147
00148
00149
00151
const int mcOriginX;
00153
const int mcOriginY;
00154
00155
const int mcSizeX;
00156
const int mcSizeY;
00157
00158
const int mcMaxValidX;
00159
const int mcMaxValidY;
00160
00161
float mTexCoordMinX;
00162
float mTexCoordMaxX;
00163
float mTexCoordMinY;
00164
float mTexCoordMaxY;
00165
00166
double mLowerLimit;
00167
double mUpperLimit;
00168
00170
const ColorDataMap& mcrColorDataMap;
00171
00173
ushort* mpTexData;
00174
00176 vrj::GlContextData<uint> mTexID;
00177
00178
00179
00180
static double sInitialLowerLimit;
00181
static double sInitialUpperLimit;
00182
00184
static int sMaxTexSize;
00185 };
00186
00187 }
00188
00189
#endif // TEXTURE_HPP