32 #ifndef vtkOpenGLContextDevice2DPrivate_h
33 #define vtkOpenGLContextDevice2DPrivate_h
87 return this->
first == other.first;
106 return std::find(this->
Cache.begin(), this->Cache.end(),
key) != this->
Cache.end();
121 typename std::list<CacheElement >::iterator it;
122 for (it = this->
Cache.begin(); it != this->Cache.end(); ++it)
124 it->second.Texture->ReleaseGraphicsResources(window);
136 if (this->
Cache.size() >= this->MaxSize)
138 this->
Cache.pop_back();
140 this->
Cache.push_front(CacheElement(
key, cacheData));
141 return this->
Cache.begin()->second;
157 typename std::list<CacheElement>::iterator it =
159 if (it != this->Cache.end())
169 return this->AddCacheData(
key, cacheData);
175 template <
class StringType>
185 return static_cast<unsigned int>(
id);
198 this->
Color.
Set(
static_cast<unsigned char>(color[0] * 255),
199 static_cast<unsigned char>(
color[1] * 255),
200 static_cast<unsigned char>(
color[2] * 255),
201 static_cast<unsigned char>(textProperty->
GetOpacity() * 255));
306 bool colorDiffer =
false;
307 while(!colorDiffer && i < 4)
325 glEnable(capability);
329 glDisable(capability);
335 float* texCoord =
new float[2*
n];
336 float minX =
f[0];
float minY =
f[1];
337 float maxX =
f[0];
float maxY =
f[1];
339 for(
int i = 0; i <
n; ++i)
341 minX = fptr[0] < minX ? fptr[0] : minX;
342 maxX = fptr[0] > maxX ? fptr[0] : maxX;
343 minY = fptr[1] < minY ? fptr[1] : minY;
344 maxY = fptr[1] > maxY ? fptr[1] : maxY;
351 float rangeX = (textureBounds[1] - textureBounds[0]) ?
352 textureBounds[1] - textureBounds[0] : 1.;
353 float rangeY = (textureBounds[3] - textureBounds[2]) ?
354 textureBounds[3] - textureBounds[2] : 1.;
355 for (
int i = 0; i <
n; ++i)
357 texCoord[i*2] = (fptr[0]-minX) / rangeX;
358 texCoord[i*2+1] = (fptr[1]-minY) / rangeY;
364 float rangeX = (maxX - minX)? maxX - minX : 1.
f;
365 float rangeY = (maxY - minY)? maxY - minY : 1.
f;
366 for (
int i = 0; i <
n; ++i)
368 texCoord[i*2] = (fptr[0]-minX)/rangeX;
369 texCoord[i*2+1] = (fptr[1]-minY)/rangeY;
379 for (
int i = 0; i < 2; ++i)
381 while (pow2[i] <
size[i])
393 cout <<
"Error = not an unsigned char..." << endl;
396 int bytesPerPixel =
image->GetNumberOfScalarComponents();
401 for (
int i = 0; i < 2; ++i)
403 texCoords[i] =
size[i] /
float(newImg[i]);
406 unsigned char *dataPtr =
407 new unsigned char[newImg[0] * newImg[1] * bytesPerPixel];
408 unsigned char *origPtr =
409 static_cast<unsigned char*
>(
image->GetScalarPointer());
411 for (
int i = 0; i < newImg[0]; ++i)
413 for (
int j = 0; j < newImg[1]; ++j)
415 for (
int k = 0; k < bytesPerPixel; ++k)
419 dataPtr[i * bytesPerPixel + j * newImg[0] * bytesPerPixel + k] =
420 origPtr[i * bytesPerPixel + j *
size[0] * bytesPerPixel + k];
424 dataPtr[i * bytesPerPixel + j * newImg[0] * bytesPerPixel + k] =
432 GLint glFormat = bytesPerPixel == 3 ? GL_RGB : GL_RGBA;
433 GLint glInternalFormat = bytesPerPixel == 3 ? GL_RGB8 : GL_RGBA8;
435 glGenTextures(1, &tmpIndex);
436 glBindTexture(GL_TEXTURE_2D, tmpIndex);
441 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
442 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
443 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
445 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
448 glTexImage2D(GL_TEXTURE_2D, 0 , glInternalFormat,
449 newImg[0], newImg[1], 0, glFormat,
450 GL_UNSIGNED_BYTE,
static_cast<const GLvoid *
>(dataPtr));
451 glAlphaFunc(GL_GREATER,
static_cast<GLclampf
>(0));
452 glEnable(GL_ALPHA_TEST);
453 glMatrixMode(GL_TEXTURE);
455 glMatrixMode(GL_MODELVIEW);
456 glEnable(GL_TEXTURE_2D);
465 cout <<
"Error = not an unsigned char..." << endl;
468 int bytesPerPixel =
image->GetNumberOfScalarComponents();
472 unsigned char *dataPtr =
473 static_cast<unsigned char*
>(
image->GetScalarPointer());
475 GLint glFormat = bytesPerPixel == 3 ? GL_RGB : GL_RGBA;
476 GLint glInternalFormat = bytesPerPixel == 3 ? GL_RGB8 : GL_RGBA8;
478 glGenTextures(1, &tmpIndex);
479 glBindTexture(GL_TEXTURE_2D, tmpIndex);
484 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
485 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
486 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
488 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
491 glTexImage2D(GL_TEXTURE_2D, 0 , glInternalFormat,
493 GL_UNSIGNED_BYTE,
static_cast<const GLvoid *
>(dataPtr));
494 glAlphaFunc(GL_GREATER,
static_cast<GLclampf
>(0));
495 glEnable(GL_ALPHA_TEST);
496 glMatrixMode(GL_TEXTURE);
498 glMatrixMode(GL_MODELVIEW);
499 glEnable(GL_TEXTURE_2D);
532 #endif // VTKOPENGLCONTEXTDEVICE2DPRIVATE_H