| 380 | |
| 381 | template <class T> |
| 382 | void vtkOpenGLImageMapperRenderChar( |
| 383 | vtkOpenGLImageMapper* self, vtkImageData* data, T* dataPtr, vtkViewport* viewport) |
| 384 | { |
| 385 | vtkOpenGLClearErrorMacro(); |
| 386 | |
| 387 | int inMin0 = self->DisplayExtent[0]; |
| 388 | int inMax0 = self->DisplayExtent[1]; |
| 389 | int inMin1 = self->DisplayExtent[2]; |
| 390 | int inMax1 = self->DisplayExtent[3]; |
| 391 | |
| 392 | int width = inMax0 - inMin0 + 1; |
| 393 | int height = inMax1 - inMin1 + 1; |
| 394 | |
| 395 | vtkIdType tempIncs[3]; |
| 396 | data->GetIncrements(tempIncs); |
| 397 | vtkIdType inInc1 = tempIncs[1]; |
| 398 | |
| 399 | int bpp = data->GetPointData()->GetScalars()->GetNumberOfComponents(); |
| 400 | |
| 401 | double range[2]; |
| 402 | data->GetPointData()->GetScalars()->GetDataTypeRange(range); |
| 403 | |
| 404 | auto ostate = static_cast<vtkOpenGLRenderWindow*>(viewport->GetVTKWindow())->GetState(); |
| 405 | ostate->vtkglPixelStorei(GL_UNPACK_ALIGNMENT, 1); |
| 406 | |
| 407 | // |
| 408 | if (bpp == 3) |
| 409 | { // feed through RGB bytes without reformatting |
| 410 | if (inInc1 != width * bpp) |
| 411 | { |
| 412 | ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, inInc1 / bpp); |
| 413 | } |
| 414 | self->DrawPixels(viewport, width, height, 3, static_cast<void*>(dataPtr)); |
| 415 | } |
| 416 | else if (bpp == 4) |
| 417 | { // feed through RGBA bytes without reformatting |
| 418 | if (inInc1 != width * bpp) |
| 419 | { |
| 420 | ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, inInc1 / bpp); |
| 421 | } |
| 422 | self->DrawPixels(viewport, width, height, 4, static_cast<void*>(dataPtr)); |
| 423 | } |
| 424 | else |
| 425 | { // feed through other bytes without reformatting |
| 426 | T* inPtr = dataPtr; |
| 427 | T* inPtr1 = inPtr; |
| 428 | unsigned char tmp; |
| 429 | |
| 430 | int i; |
| 431 | int j = height; |
| 432 | |
| 433 | unsigned char* newPtr; |
| 434 | int nC = 4; |
| 435 | if (bpp == 1 || bpp == 3) |
| 436 | { |
| 437 | nC = 3; |
| 438 | } |
| 439 | if (nC == 3) |
no test coverage detected