forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkWebApplication.h
154 lines (128 loc) · 4.21 KB
/
vtkWebApplication.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*=========================================================================
Program: Visualization Toolkit
Module: vtkWebApplication.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkWebApplication
* @brief defines ParaViewWeb application interface.
*
* vtkWebApplication defines the core interface for a ParaViewWeb application.
* This exposes methods that make it easier to manage views and rendered images
* from views.
*/
#ifndef vtkWebApplication_h
#define vtkWebApplication_h
#include "vtkObject.h"
#include "vtkWebCoreModule.h" // needed for exports
#include <string> // needed for std::string
class vtkObjectIdMap;
class vtkRenderWindow;
class vtkUnsignedCharArray;
class vtkWebInteractionEvent;
class VTKWEBCORE_EXPORT vtkWebApplication : public vtkObject
{
public:
static vtkWebApplication* New();
vtkTypeMacro(vtkWebApplication, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Set the encoding to be used for rendered images.
*/
enum
{
ENCODING_NONE=0,
ENCODING_BASE64=1
};
vtkSetClampMacro(ImageEncoding, int, ENCODING_NONE, ENCODING_BASE64);
vtkGetMacro(ImageEncoding, int);
//@}
//@{
/**
* Set the compression to be used for rendered images.
*/
enum
{
COMPRESSION_NONE=0,
COMPRESSION_PNG=1,
COMPRESSION_JPEG=2
};
vtkSetClampMacro(ImageCompression, int, COMPRESSION_NONE, COMPRESSION_JPEG);
vtkGetMacro(ImageCompression, int);
//@}
//@{
/**
* Set the number of worker threads to use for image encoding. Calling this
* method with a number greater than 32 or less than zero will have no effect.
*/
void SetNumberOfEncoderThreads(vtkTypeUInt32);
vtkTypeUInt32 GetNumberOfEncoderThreads();
//@}
//@{
/**
* Render a view and obtain the rendered image.
*/
vtkUnsignedCharArray* StillRender(vtkRenderWindow* view, int quality = 100);
vtkUnsignedCharArray* InteractiveRender(vtkRenderWindow* view, int quality = 50);
const char* StillRenderToString(vtkRenderWindow* view, vtkMTimeType time = 0, int quality = 100);
//@}
/**
* StillRenderToString() need not necessary returns the most recently rendered
* image. Use this method to get whether there are any pending images being
* processed concurrently.
*/
bool GetHasImagesBeingProcessed(vtkRenderWindow*);
/**
* Communicate mouse interaction to a view.
* Returns true if the interaction changed the view state, otherwise returns false.
*/
bool HandleInteractionEvent(
vtkRenderWindow* view, vtkWebInteractionEvent* event);
/**
* Invalidate view cache
*/
void InvalidateCache(vtkRenderWindow* view);
//@{
/**
* Return the MTime of the last array exported by StillRenderToString.
*/
vtkGetMacro(LastStillRenderToMTime, vtkMTimeType);
//@}
/**
* Return the Meta data description of the input scene in JSON format.
* This is using the vtkWebGLExporter to parse the scene.
* NOTE: This should be called before getting the webGL binary data.
*/
const char* GetWebGLSceneMetaData(vtkRenderWindow* view);
/**
* Return the binary data given the part index
* and the webGL object piece id in the scene.
*/
const char* GetWebGLBinaryData(vtkRenderWindow *view, const char* id, int partIndex);
vtkObjectIdMap* GetObjectIdMap();
/**
* Return a hexadecimal formatted string of the VTK object's memory address,
* useful for uniquely identifying the object when exporting data.
*
* e.g. 0x8f05a90
*/
static std::string GetObjectId(vtkObject* obj);
protected:
vtkWebApplication();
~vtkWebApplication() override;
int ImageEncoding;
int ImageCompression;
vtkMTimeType LastStillRenderToMTime;
private:
vtkWebApplication(const vtkWebApplication&) = delete;
void operator=(const vtkWebApplication&) = delete;
class vtkInternals;
vtkInternals* Internals;
};
#endif