bool convertAlphaTexture = system( command2.latin1() ) == 0;
if( convertMainTexture && convertAlphaTexture )
- MakeTexture( mainTextureVTI, alphaTextureVTI );
+ myGaussPointsPL->SetImageData( VISU_GaussPointsPL::MakeTexture( mainTextureVTI.latin1(),
+ alphaTextureVTI.latin1() ) );
}
-
-//----------------------------------------------------------------------------
-void
-VISU::GaussPoints_i
-::MakeTexture( const QString& theMainTexture,
- const QString& theAlphaTexture )
-{
- if( theMainTexture.isNull() || theAlphaTexture.isNull() )
- return;
-
- vtkXMLImageDataReader* aMainReader = vtkXMLImageDataReader::New();
- vtkXMLImageDataReader* anAlphaReader = vtkXMLImageDataReader::New();
-
- aMainReader->SetFileName( theMainTexture );
- anAlphaReader->SetFileName( theAlphaTexture );
-
- aMainReader->Update();
- anAlphaReader->Update();
-
- vtkImageData* aMainImageData = aMainReader->GetOutput();
- vtkImageData* anAlphaImageData = anAlphaReader->GetOutput();
-
- int* aMainImageSize = aMainImageData->GetDimensions();
- int* anAlphaImageSize = anAlphaImageData->GetDimensions();
- if(aMainImageSize[0] != anAlphaImageSize[0] || aMainImageSize[1] != anAlphaImageSize[1])
- throw std::runtime_error("GaussPoints_i::MakeTexture : aMainImageSize[0] != anAlphaImageSize[0] || aMainImageSize[1] != anAlphaImageSize[1]");
-
- int aNbCompositeComponents = 4;
- vtkImageData* aCompositeImageData = vtkImageData::New();
- aCompositeImageData->SetDimensions(aMainImageSize);
- aCompositeImageData->SetScalarTypeToUnsignedChar();
- aCompositeImageData->SetNumberOfScalarComponents(aNbCompositeComponents);
- aCompositeImageData->AllocateScalars();
-
- unsigned char* aMainDataPtr = (unsigned char*)aMainImageData->GetScalarPointer();
- unsigned char* anAlphaDataPtr = (unsigned char*)anAlphaImageData->GetScalarPointer();
- unsigned char *aCompositeDataPtr = (unsigned char * )aCompositeImageData->GetScalarPointer();
-
- int aNbMainComponents = aMainImageData->GetNumberOfScalarComponents();
- int aNbAlphaComponents = anAlphaImageData->GetNumberOfScalarComponents();
- int aCompositeSize = aMainImageSize[0] * aMainImageSize[1] * aNbCompositeComponents;
-
- int aMainId = 0, anAlphaId = 0, aCompositeId = 0;
- for(; aCompositeId < aCompositeSize;)
- {
- aCompositeDataPtr[aCompositeId] = aMainDataPtr[aMainId];
- aCompositeDataPtr[aCompositeId + 1] = aMainDataPtr[aMainId + 1];
- aCompositeDataPtr[aCompositeId + 2] = aMainDataPtr[aMainId + 2];
- aCompositeDataPtr[aCompositeId + 3] = anAlphaDataPtr[anAlphaId];
-
- aMainId += aNbMainComponents;
- anAlphaId += aNbAlphaComponents;
- aCompositeId += aNbCompositeComponents;
- }
- aMainReader->Delete();
- anAlphaReader->Delete();
- aCompositeImageData->Update();
-
- myGaussPointsPL->SetImageData(aCompositeImageData);
-}