Skip to content

Commit 500c43f

Browse files
Merge pull request #5 from LIHPC-Computational-Geometry/dev-8.6.0
Version 8.6.0. By default, all prints are made in soft rendering.
2 parents e680ecb + 11da58a commit 500c43f

File tree

5 files changed

+52
-29
lines changed

5 files changed

+52
-29
lines changed

cmake/version.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#
44

55
set (QT_VTK_MAJOR_VERSION "8")
6-
set (QT_VTK_MINOR_VERSION "5")
7-
set (QT_VTK_RELEASE_VERSION "1")
6+
set (QT_VTK_MINOR_VERSION "6")
7+
set (QT_VTK_RELEASE_VERSION "0")
88
set (QT_VTK_VERSION ${QT_VTK_MAJOR_VERSION}.${QT_VTK_MINOR_VERSION}.${QT_VTK_RELEASE_VERSION})
99

1010

src/QtVtk/QtVTKPrintHelper.cpp

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// voir fichier /etc/printcap : liste des imprimantes
55

66
#include <QtVtk/QtVTKPrintHelper.h>
7+
#include <QtVtk/QtVtk.h>
78
#include <QtUtil/QtMessageBox.h>
89

910
#include <TkUtil/Exception.h>
@@ -305,8 +306,7 @@ void QtVTKPrintHelper::printToFile (vtkRenderWindow& window, const string& fileN
305306
if ((string::npos == dotPos) || (string::npos == fileName.length ( ) - 1))
306307
{
307308
UTF8String error (charset);
308-
error << "Impossibilité de déterminer le format du fichier à "
309-
<< "partir de son extension.\n"
309+
error << "Impossibilité de déterminer le format du fichier à partir de son extension.\n"
310310
<< "Extensions possibles : "
311311
<< ".ps .eps .jpg .jpeg .bmp .png .pnm .tiff .pdf";
312312
throw Exception (error);
@@ -340,36 +340,39 @@ void QtVTKPrintHelper::printToFile (vtkRenderWindow& window, const string& fileN
340340
} // EPS ou PDF
341341

342342
// V 7.14.7 : on s'assure que la copie du buffer graphique pourra fonctionner, à savoir qu'on fonctionne sur une
343-
// machine aveccarte graphique, ou, à défaut, pas sur une machine virtuelle :
343+
// machine avec carte graphique, ou, à défaut, pas sur une machine virtuelle :
344344
static bool first = true;
345345
static bool useHard = true;
346-
if (true == first)
346+
if (true == QtVtk::forceSoftwarePrinter)
347347
{
348-
const string glVendor ((const char*)glGetString (GL_VENDOR)); // NVIDIA, ATI, Intel, ...
349-
const string glRenderer ((const char*)glGetString (GL_RENDERER)); // Quattro, Mesa DRI Intel, ...
350-
if ((true == glVendor.empty ( )) || (true == glRenderer.empty ( )))
351-
useHard = false;
352-
if (NULL != strcasestr (glRenderer.c_str ( ), "llvmpipe"))
353-
useHard = false;
354-
if (false == useHard) // Pas de hard détecté, par sécurité on fait une impression offscreen :
355-
cout << "Absence de carte graphique détectée, les impressions dans un fichier seront effectuées en rendu logiciel par sécurité." << endl;
356-
else
348+
if (true == first)
357349
{
358-
if (true == MachineData::isVirtualMachine ( ))
359-
{
350+
const string glVendor ((const char*)glGetString (GL_VENDOR)); // NVIDIA, ATI, Intel, ...
351+
const string glRenderer ((const char*)glGetString (GL_RENDERER)); // Quattro, Mesa DRI Intel, ...
352+
if ((true == glVendor.empty ( )) || (true == glRenderer.empty ( )))
360353
useHard = false;
361-
cout << "Machine virtuelle détectée, les impressions dans un fichier seront effectuées en rendu logiciel par sécurité." << endl;
362-
} // if (true == MachineData::isVirtualMachine ( ))
363-
} // else if (false == useHard)
364-
first = false;
365-
} // if (true == first)
366-
367-
if (false == useHard)
354+
if (NULL != strcasestr (glRenderer.c_str ( ), "llvmpipe"))
355+
useHard = false;
356+
if (false == useHard) // Pas de hard détecté, par sécurité on fait une impression offscreen :
357+
cout << "Absence de carte graphique détectée, les impressions dans un fichier seront effectuées en rendu logiciel par sécurité." << endl;
358+
else
359+
{
360+
if (true == MachineData::isVirtualMachine ( ))
361+
{
362+
useHard = false;
363+
cout << "Machine virtuelle détectée, les impressions dans un fichier seront effectuées en rendu logiciel par sécurité." << endl;
364+
} // if (true == MachineData::isVirtualMachine ( ))
365+
} // else if (false == useHard)
366+
first = false;
367+
} // if (true == first)
368+
} // if (true == QtVtk::forceSoftwarePrinter)
369+
370+
if ((true == QtVtk::forceSoftwarePrinter) || (false == useHard))
368371
{
369372
printToFile (window, fileName, window.GetSize ( )[0], window.GetSize ( )[1]);
370373
return;
371-
} // if (false == useHard)
372-
374+
} // if ((true == QtVtk::forceSoftwarePrinter) || (false == useHard))
375+
373376
// Impression raster : on passe par un image.
374377
vtkWindowToImageFilter* windowToImageFilter = vtkWindowToImageFilter::New ( );
375378
vtkImageWriter* writer = createWriter (fileName);

src/QtVtk/QtVtk.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ static vtkSmartPointer<vtkHardwareSelector> hardwareSelector;
1717
static vtkSmartPointer<vtkRenderWindow> hardwareSelectionWindow;
1818
static vtkSmartPointer<vtkRenderer> hardwareSelectionRenderer;
1919

20+
bool QtVtk::forceSoftwarePrinter = true; // v 8.6.0
2021

2122

2223
QtVtk::QtVtk ( )
@@ -44,8 +45,9 @@ QtVtk::~QtVtk ( )
4445
} // QtVtk::~QtVtk
4546

4647

47-
void QtVtk::initialize ( )
48+
void QtVtk::initialize (bool softwarePrinter)
4849
{
50+
forceSoftwarePrinter = softwarePrinter; // v 8.6.0
4951
// Q_INIT_RESOURCE (QtVtk);
5052

5153
/* if (0 != QApplication::desktop ( ))

src/QtVtk/public/QtVtk/QtVtk.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ class QtVtk
3030
public :
3131

3232
/**
33-
* Initialisation des services..
33+
* Initialisation des services.
34+
* @param forceSoftwarePrinter : true si on force des impressions n'utilisant pas le buffer de la fenêtre Open GL. Les impressions sont plus lentes et coûteuses
35+
* en mémoire, mais le rendu "hard" dysfonctionne dans certaines configurations, voire peut planter une station ou session de machine virtuelle. Vaut true
36+
* par défaut.
3437
*/
35-
static void initialize ( );
38+
static void initialize (bool forceSoftwarePrinter = true);
3639

3740
/**
3841
* Arrêts des services.
@@ -65,6 +68,14 @@ class QtVtk
6568
static vtkRenderer& getHardwareSelectionRenderer ( );
6669

6770

71+
/** true si on force des impressions n'utilisant pas le buffer de la fenêtre Open GL. Les impressions sont plus lentes et coûteuses
72+
* en mémoire, mais le rendu "hard" dysfonctionne dans certaines configurations, voire peut planter une station ou session de machine virtuelle.
73+
* Vaut true par défaut.
74+
* @since 8.6.0
75+
*/
76+
static bool forceSoftwarePrinter;
77+
78+
6879
private :
6980

7081
/**

versions.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
A FAIRE : tester le vtkIntersectionPolyDataFilter de VTK 7, voir si de base il propose les services attendus (Inner, ...).
22

3+
Version 8.6.0 : 22/11/24
4+
===============
5+
6+
Par défaut les impressions sont toutes faites en rendu soft. En effet, le rendu hard est très dégradé dans des configurations récentes,
7+
et peut planter une session effectuées dans une machine virtuelle.
8+
9+
310
Version 8.5.1 : 14/06/24
411
===============
512

0 commit comments

Comments
 (0)