Skip to content
Snippets Groups Projects
Commit 677ac889 authored by Andrew Maclean's avatar Andrew Maclean
Browse files

Merge branch 'Modernise_Qt' into 'master'

Modernising the code

See merge request !82
parents 82eba378 5c1b5a92
No related branches found
No related tags found
1 merge request!82Modernising the code
......@@ -9,7 +9,6 @@
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
......
#include "EventQtSlotConnect.h"
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkEventQtSlotConnect.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkInteractorStyleTrackballActor.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
......
#include <vtkImageData.h>
#include <vtkNew.h>
#include <vtkSmartPointer.h>
#include <QApplication>
......@@ -6,18 +7,21 @@
#include <QImage>
// Create a green 50x50 imageData for demonstration purposes
vtkSmartPointer<vtkImageData> createDemoImageData() {
vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New();
vtkSmartPointer<vtkImageData> createDemoImageData()
{
vtkNew<vtkImageData> image;
image->SetDimensions(50, 50, 1);
image->AllocateScalars(VTK_UNSIGNED_CHAR, 3);
int width = image->GetDimensions()[0];
int height = image->GetDimensions()[1];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
unsigned char *pixel =
static_cast<unsigned char *>(image->GetScalarPointer(x, y, 0));
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
unsigned char* pixel =
static_cast<unsigned char*>(image->GetScalarPointer(x, y, 0));
pixel[0] = 0;
pixel[1] = 255;
pixel[2] = 0;
......@@ -28,8 +32,10 @@ vtkSmartPointer<vtkImageData> createDemoImageData() {
}
// The actual conversion code
QImage vtkImageDataToQImage(vtkSmartPointer<vtkImageData> imageData) {
if (!imageData) {
QImage vtkImageDataToQImage(vtkSmartPointer<vtkImageData> imageData)
{
if (!imageData)
{
return QImage();
}
......@@ -37,13 +43,15 @@ QImage vtkImageDataToQImage(vtkSmartPointer<vtkImageData> imageData) {
int width = imageData->GetDimensions()[0];
int height = imageData->GetDimensions()[1];
QImage image(width, height, QImage::Format_RGB32);
QRgb *rgbPtr = reinterpret_cast<QRgb *>(image.bits()) + width * (height - 1);
unsigned char *colorsPtr =
reinterpret_cast<unsigned char *>(imageData->GetScalarPointer());
QRgb* rgbPtr = reinterpret_cast<QRgb*>(image.bits()) + width * (height - 1);
unsigned char* colorsPtr =
reinterpret_cast<unsigned char*>(imageData->GetScalarPointer());
// Loop over the vtkImageData contents.
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
// Swap the vtkImageData RGB values with an equivalent QColor
*(rgbPtr++) = QColor(colorsPtr[0], colorsPtr[1], colorsPtr[2]).rgb();
colorsPtr += imageData->GetNumberOfScalarComponents();
......@@ -55,7 +63,8 @@ QImage vtkImageDataToQImage(vtkSmartPointer<vtkImageData> imageData) {
return image;
}
int main(int argc, char *argv[]) {
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QImage qimage = vtkImageDataToQImage(createDemoImageData());
......
### Description
This example shows how a vtkImageData can be converted into a [QImage](http://doc.qt.io/qt-5/qimage.html).
!!! seealso
the [QImageToImageSource](QImageToImageSource) example.
the [QImageToImageSource](../QImageToImageSource) example.
#include <QApplication>
#include <QPixmap>
#include <vtkNew.h>
#include <vtkQImageToImageSource.h>
#include <vtkSmartPointer.h>
int main(int argc, char *argv[]) {
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QPixmap pixmap(10, 10);
QColor color(10, 20, 30);
pixmap.fill(color);
vtkSmartPointer<vtkQImageToImageSource> qimageToImageSource =
vtkSmartPointer<vtkQImageToImageSource>::New();
vtkNew<vtkQImageToImageSource> qimageToImageSource;
QImage qimage = pixmap.toImage();
qimageToImageSource->SetQImage(&qimage);
qimageToImageSource->Update();
......
### Description
This example demonstrates the use of vtkQImageToImageSource.
See also the [ImageDataToQImage](ImageDataToQImage) example.
See also the [ImageDataToQImage](../ImageDataToQImage) example.
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkPlot.h>
#include <vtkTable.h>
#include <vtkIntArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkContextView.h>
#include <vtkIntArray.h>
#include <vtkNew.h>
#include <vtkPlot.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkTable.h>
#define VTK_CREATE(type, name) \
vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
namespace {
// Monthly circulation data
static int data_2008[] = {10822, 10941, 9979, 10370, 9460, 11228, 15093, 12231, 10160, 9816, 9384, 7892};
static int data_2009[] = {9058, 9474, 9979, 9408, 8900, 11569, 14688, 12231, 10294, 9585, 8957, 8590};
static int data_2010[] = {9058, 10941, 9979, 10270, 8900, 11228, 14688, 12231, 10160, 9585, 9384, 8590};
int main(int, char*[] )
int data_2008[] = {10822, 10941, 9979, 10370, 9460, 11228,
15093, 12231, 10160, 9816, 9384, 7892};
int data_2009[] = {9058, 9474, 9979, 9408, 8900, 11569,
14688, 12231, 10294, 9585, 8957, 8590};
int data_2010[] = {9058, 10941, 9979, 10270, 8900, 11228,
14688, 12231, 10160, 9585, 9384, 8590};
} // namespace
int main(int, char*[])
{
// Set up a 2D scene, add an XY chart to it
VTK_CREATE(vtkContextView, view);
vtkNew<vtkContextView> view;
view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
view->GetRenderWindow()->SetSize(400, 300);
VTK_CREATE(vtkChartXY, chart);
vtkNew<vtkChartXY> chart;
view->GetScene()->AddItem(chart);
// Create a table with some points in it...
VTK_CREATE(vtkTable, table);
vtkNew<vtkTable> table;
VTK_CREATE(vtkIntArray, arrMonth);
vtkNew<vtkIntArray> arrMonth;
arrMonth->SetName("Month");
table->AddColumn(arrMonth);
VTK_CREATE(vtkIntArray, arr2008);
vtkNew<vtkIntArray> arr2008;
arr2008->SetName("2008");
table->AddColumn(arr2008);
VTK_CREATE(vtkIntArray, arr2009);
vtkNew<vtkIntArray> arr2009;
arr2009->SetName("2009");
table->AddColumn(arr2009);
VTK_CREATE(vtkIntArray, arr2010);
vtkNew<vtkIntArray> arr2010;
arr2010->SetName("2010");
table->AddColumn(arr2010);
table->SetNumberOfRows(12);
for (int i = 0; i < 12; i++)
{
table->SetValue(i,0,i+1);
table->SetValue(i,1,data_2008[i]);
table->SetValue(i,2,data_2009[i]);
table->SetValue(i,3,data_2010[i]);
table->SetValue(i, 0, i + 1);
table->SetValue(i, 1, data_2008[i]);
table->SetValue(i, 2, data_2009[i]);
table->SetValue(i, 3, data_2010[i]);
}
// Add multiple line plots, setting the colors etc
vtkPlot *line = 0;
vtkPlot* line = 0;
line = chart->AddPlot(vtkChart::BAR);
line->SetInputData(table, 0, 1);
......
......@@ -7,7 +7,7 @@
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkNew.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
......@@ -30,16 +30,16 @@ RenderWindowUIMultipleInheritance::RenderWindowUIMultipleInheritance()
#endif
// Sphere
auto sphereSource = vtkSmartPointer<vtkSphereSource>::New();
vtkNew<vtkSphereSource> sphereSource;
sphereSource->Update();
auto sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
auto sphereActor = vtkSmartPointer<vtkActor>::New();
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
// VTK Renderer
auto renderer = vtkSmartPointer<vtkRenderer>::New();
vtkNew<vtkRenderer> renderer;
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
......
......@@ -13,7 +13,6 @@
#include <vtkQtTableView.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
......@@ -39,30 +38,30 @@ ShareCameraQt::ShareCameraQt()
#endif
// Sphere
auto sphereSource = vtkSmartPointer<vtkSphereSource>::New();
vtkNew<vtkSphereSource> sphereSource;
sphereSource->Update();
auto sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
auto sphereActor = vtkSmartPointer<vtkActor>::New();
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
// Cube
auto cubeSource = vtkSmartPointer<vtkCubeSource>::New();
vtkNew<vtkCubeSource> cubeSource;
cubeSource->Update();
auto cubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkNew<vtkPolyDataMapper> cubeMapper;
cubeMapper->SetInputConnection(cubeSource->GetOutputPort());
auto cubeActor = vtkSmartPointer<vtkActor>::New();
vtkNew<vtkActor> cubeActor;
cubeActor->SetMapper(cubeMapper);
cubeActor->GetProperty()->SetColor(
colors->GetColor4d("MediumSeaGreen").GetData());
// VTK Renderer
auto leftRenderer = vtkSmartPointer<vtkRenderer>::New();
vtkNew<vtkRenderer> leftRenderer;
leftRenderer->AddActor(sphereActor);
leftRenderer->SetBackground(colors->GetColor3d("LightSteelBlue").GetData());
auto rightRenderer = vtkSmartPointer<vtkRenderer>::New();
vtkNew<vtkRenderer> rightRenderer;
// Add Actor to renderer
rightRenderer->AddActor(cubeActor);
......
#include "SideBySideRenderWindowsQt.h"
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkCamera.h>
#include <vtkCubeSource.h>
#include <vtkDataObjectToTable.h>
......@@ -11,7 +13,7 @@
#include <vtkQtTableView.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkNew.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
......@@ -37,7 +39,7 @@ SideBySideRenderWindowsQt::SideBySideRenderWindowsQt()
#endif
// Sphere
auto sphereSource = vtkSmartPointer<vtkSphereSource>::New();
vtkNew<vtkSphereSource> sphereSource;
sphereSource->SetPhiResolution(30);
sphereSource->SetThetaResolution(30);
sphereSource->Update();
......@@ -45,29 +47,29 @@ SideBySideRenderWindowsQt::SideBySideRenderWindowsQt()
sphereElev->SetInputConnection(sphereSource->GetOutputPort());
sphereElev->SetLowPoint(0, -1.0, 0);
sphereElev->SetHighPoint(0, 1.0, 0);
auto sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereElev->GetOutputPort());
auto sphereActor = vtkSmartPointer<vtkActor>::New();
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
// Cube
auto cubeSource = vtkSmartPointer<vtkCubeSource>::New();
vtkNew<vtkCubeSource> cubeSource;
cubeSource->Update();
vtkNew<vtkElevationFilter> cubeElev;
cubeElev->SetInputConnection(cubeSource->GetOutputPort());
cubeElev->SetLowPoint(0, -1.0, 0);
cubeElev->SetHighPoint(0, 1.0, 0);
auto cubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkNew<vtkPolyDataMapper> cubeMapper;
cubeMapper->SetInputConnection(cubeElev->GetOutputPort());
auto cubeActor = vtkSmartPointer<vtkActor>::New();
vtkNew<vtkActor> cubeActor;
cubeActor->SetMapper(cubeMapper);
// VTK Renderer
auto leftRenderer = vtkSmartPointer<vtkRenderer>::New();
vtkNew<vtkRenderer> leftRenderer;
leftRenderer->AddActor(sphereActor);
leftRenderer->SetBackground(colors->GetColor3d("LightSteelBlue").GetData());
auto rightRenderer = vtkSmartPointer<vtkRenderer>::New();
vtkNew<vtkRenderer> rightRenderer;
// Add Actor to renderer
rightRenderer->AddActor(cubeActor);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment