Example #1
0
static QIcon CreateIcon(const nall::image& image, bool scale = false) {
  nall::image qtBuffer = image;
  qtBuffer.transform(0, 32, 255u << 24, 255u << 16, 255u << 8, 255u << 0);
  if(scale) qtBuffer.scale(16, 16, Interpolation::Linear);
  QImage qtImage(qtBuffer.data, qtBuffer.width, qtBuffer.height, QImage::Format_ARGB32);
  return QIcon(QPixmap::fromImage(qtImage));
}
//--------------------------------------------------------------------------------------------------
void ImageViewDialog::setImage( const cv::Mat& image )
{
	if ( image.type() != CV_8UC3 && image.type() != CV_8UC4 )
	{
		printf( "Warning: Invalid image type...\n" );
		return;
	}

    // Take a copy of the image
    mImage = image;

    // Prepare for image
    mpScene->setSceneRect( 0, 0, mImage.cols, mImage.rows );

	// Draw the color image
	QPixmap pixmap( mImage.cols, mImage.rows );

	if ( image.type() == CV_8UC3 )
	{
		QImage qtImage( mImage.data, mImage.cols, mImage.rows, QImage::Format_RGB888 );
		pixmap.convertFromImage( qtImage );
	}
	else if ( image.type() == CV_8UC4 )
	{
		QImage qtImage( mImage.data, mImage.cols, mImage.rows, QImage::Format_RGB32 );
		pixmap.convertFromImage( qtImage );
	}

	if ( NULL == mpPixmapItem )
	{
	    mpPixmapItem = new ImageViewPixmap( pixmap, this );
		mpScene->addItem( mpPixmapItem );
	}
	else
	{
		mpPixmapItem->setPixmap( pixmap );
	}

	clearDragRectangle();
}
QImage wxQtConvertImage( const wxImage &image )
{
	bool hasAlpha = image.HasAlpha();
	bool hasMask = image.HasMask();
	wxSize size ( image.GetWidth(), image.GetHeight() );
	QImage qtImage( wxQtConvertSize( size ),
				   ( (hasAlpha || hasMask ) ? QImage::Format_ARGB32 : QImage::Format_RGB32 ) );

	unsigned char *data = image.GetData();
	unsigned char *alpha = hasAlpha ? image.GetAlpha() : NULL;
	QRgb colour;

	QRgb maskedColour;
	if ( hasMask )
	{
		unsigned char r, g, b;
		image.GetOrFindMaskColour( &r, &g, &b );
		maskedColour = ( r << 16 ) + ( g << 8 ) + b;
	}

	for (int y = 0; y < image.GetHeight(); y++)
	{
		for (int x = 0; x < image.GetWidth(); x++)
		{
			if (hasAlpha)
			{
				colour = alpha[0] << 24;
				alpha++;
			}
			else
				colour = 0;

			colour += (data[0] << 16) + (data[1] << 8) + data[2];

			if ( hasMask && colour != maskedColour )
				colour += 0xFF000000; // 255 << 24

			qtImage.setPixel(x, y, colour);

			data += 3;
		}
	}
	return qtImage;
}