moved method imageToPixmap() from GEOM_Displayer to GUI module (OCCViewer) as external

This commit is contained in:
mpa 2014-09-11 13:02:10 +04:00
parent 04e80ddd75
commit 4ffc08bf4b

View File

@ -77,6 +77,7 @@
#include <OCCViewer_ViewWindow.h>
#include <OCCViewer_ViewPort3d.h>
#include <OCCViewer_Utilities.h>
// OCCT Includes
#include <AIS_Drawer.hxx>
@ -158,47 +159,6 @@ namespace
return aMap;
}
//===========================================================================
// Function : imageToPixmap
// Purpose : Concert QImage to OCCT pixmap
//===========================================================================
static inline Handle(Image_PixMap) imageToPixmap( const QImage& anImage )
{
Handle(Image_PixMap) aPixmap = new Image_PixMap();
if ( !anImage.isNull() ) {
aPixmap->InitTrash( Image_PixMap::ImgBGRA, anImage.width(), anImage.height() );
aPixmap->SetTopDown( Standard_True );
const uchar* aImageBytes = anImage.bits();
for ( int aLine = anImage.height() - 1; aLine >= 0; --aLine ) {
#if OCC_VERSION_LARGE > 0x06070100
// convert pixels from ARGB to renderer-compatible RGBA
for ( int aByte = 0; aByte < anImage.width(); ++aByte ) {
Image_ColorBGRA& aPixmapBytes = aPixmap->ChangeValue<Image_ColorBGRA>(aLine, aByte);
aPixmapBytes.b() = (Standard_Byte) *aImageBytes++;
aPixmapBytes.g() = (Standard_Byte) *aImageBytes++;
aPixmapBytes.r() = (Standard_Byte) *aImageBytes++;
aPixmapBytes.a() = (Standard_Byte) *aImageBytes++;
}
#else
Image_ColorBGRA* aPixmapBytes = aPixmap->EditData<Image_ColorBGRA>().ChangeRow(aLine);
// convert pixels from ARGB to renderer-compatible RGBA
for ( int aByte = 0; aByte < anImage.width(); ++aByte ) {
aPixmapBytes->b() = (Standard_Byte) *aImageBytes++;
aPixmapBytes->g() = (Standard_Byte) *aImageBytes++;
aPixmapBytes->r() = (Standard_Byte) *aImageBytes++;
aPixmapBytes->a() = (Standard_Byte) *aImageBytes++;
aPixmapBytes++;
}
#endif
}
}
return aPixmap;
}
//===========================================================================
// Function : getDefaultTexture
// Purpose : Get default texture