File: WrappedMace.cxx

package info (click to toggle)
paraview 5.9.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 367,928 kB
  • sloc: cpp: 2,870,477; ansic: 1,329,317; python: 132,607; xml: 98,045; sh: 5,265; java: 4,541; yacc: 4,385; f90: 3,099; perl: 2,363; lex: 1,950; javascript: 1,574; objc: 143; makefile: 135; tcl: 59; pascal: 50; fortran: 27
file content (157 lines) | stat: -rw-r--r-- 7,395 bytes parent folder | download | duplicates (4)
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
155
156
157
/*=========================================================================

  Program:   Visualization Toolkit

  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.

=========================================================================*/
#include "vtkActor.h"
#include "vtkAlgorithmOutput.h"
#include "vtkConeSource.h"
#include "vtkGlyph3D.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderer.h"
#include "vtkSDL2OpenGLRenderWindow.h"
#include "vtkSDL2RenderWindowInteractor.h"
#include "vtkSphereSource.h"

#include <emscripten/bind.h>

#define vtkAddDestructor(cname)                                                                    \
  template <>                                                                                      \
  void raw_destructor<cname>(cname * ptr)                                                          \
  {                                                                                                \
    ptr->Delete();                                                                                 \
  }

// Since VTK destructors are private have to override all
// wrapped classes here
namespace emscripten
{
namespace internal
{
vtkAddDestructor(vtkActor);
vtkAddDestructor(vtkAlgorithm);
vtkAddDestructor(vtkAlgorithmOutput);
vtkAddDestructor(vtkConeSource);
vtkAddDestructor(vtkGlyph3D);
vtkAddDestructor(vtkMapper);
vtkAddDestructor(vtkPolyDataMapper);
vtkAddDestructor(vtkProp);
vtkAddDestructor(vtkRenderer);
vtkAddDestructor(vtkRenderWindow);
vtkAddDestructor(vtkRenderWindowInteractor);
vtkAddDestructor(vtkSDL2OpenGLRenderWindow);
vtkAddDestructor(vtkSDL2RenderWindowInteractor);
vtkAddDestructor(vtkSphereSource);
vtkAddDestructor(vtkViewport);
}
}

EMSCRIPTEN_BINDINGS(webtest)
{
  // vtkActor ---------------------------------------------------------
  emscripten::class_<vtkActor, emscripten::base<vtkProp>>("vtkActor")
    .constructor(&vtkActor::New, emscripten::allow_raw_pointers())
    .function("SetMapper", &vtkActor::SetMapper, emscripten::allow_raw_pointers());

  // vtkAlgorithm -----------------------------------------------------
  emscripten::class_<vtkAlgorithm>("vtkAlgorithm")
    .function("GetOutputPort",
      emscripten::select_overload<vtkAlgorithmOutput*(vtkAlgorithm&)>(
        [](vtkAlgorithm& self) { return self.vtkAlgorithm::GetOutputPort(); }),
      emscripten::allow_raw_pointers())
    .function("SetInputConnection",
      emscripten::select_overload<void(vtkAlgorithm&, vtkAlgorithmOutput*)>(
        [](vtkAlgorithm& self, vtkAlgorithmOutput* ptr) {
          self.vtkAlgorithm::SetInputConnection(ptr);
        }),
      emscripten::allow_raw_pointers());

  // vtkAlgorithmOutput -----------------------------------------------
  emscripten::class_<vtkAlgorithmOutput>("vtkAlgorithmOutput");

  // vtkConeSource ----------------------------------------------------
  emscripten::class_<vtkConeSource, emscripten::base<vtkAlgorithm>>("vtkConeSource")
    .constructor(&vtkConeSource::New, emscripten::allow_raw_pointers())
    .function("SetResolution", &vtkConeSource::SetResolution);

  // vtkGlyph3D -------------------------------------------------------
  emscripten::class_<vtkGlyph3D, emscripten::base<vtkAlgorithm>>("vtkGlyph3D")
    .constructor(&vtkGlyph3D::New, emscripten::allow_raw_pointers())
    .function("SetVectorModeToUseNormal", &vtkGlyph3D::SetVectorModeToUseNormal)
    .function("SetScaleModeToScaleByVector", &vtkGlyph3D::SetScaleModeToScaleByVector)
    .function("SetScaleFactor", &vtkGlyph3D::SetScaleFactor)
    .function("SetSourceConnection",
      emscripten::select_overload<void(vtkGlyph3D&, vtkAlgorithmOutput*)>(
        [](vtkGlyph3D& self, vtkAlgorithmOutput* ptr) {
          self.vtkGlyph3D::SetSourceConnection(ptr);
        }),
      emscripten::allow_raw_pointers());

  // vtkMapper --------------------------------------------------------
  emscripten::class_<vtkMapper, emscripten::base<vtkAlgorithm>>("vtkMapper");

  // vtkPolyDataMapper ------------------------------------------------
  emscripten::class_<vtkPolyDataMapper, emscripten::base<vtkMapper>>("vtkPolyDataMapper")
    .constructor(&vtkPolyDataMapper::New, emscripten::allow_raw_pointers());

  // vtkProp ----------------------------------------------------------
  emscripten::class_<vtkProp>("vtkProp");

  // vtkRenderer ------------------------------------------------------
  emscripten::class_<vtkRenderer, emscripten::base<vtkViewport>>("vtkRenderer")
    .constructor(&vtkRenderer::New, emscripten::allow_raw_pointers())
    .function("AddActor", &vtkRenderer::AddActor, emscripten::allow_raw_pointers());

  // vtkRenderWindow --------------------------------------------------
  emscripten::class_<vtkRenderWindow>("vtkRenderWindow")
    .constructor(&vtkRenderWindow::New, emscripten::allow_raw_pointers())
    .function("SetMultiSamples", &vtkRenderWindow::SetMultiSamples)
    .function("Render", &vtkRenderWindow::Render)
    .function("AddRenderer", &vtkRenderWindow::AddRenderer, emscripten::allow_raw_pointers());

  // vtkRenderWindowInteractor ----------------------------------------
  emscripten::class_<vtkRenderWindowInteractor>("vtkRenderWindowInteractor")
    .function("Start", &vtkRenderWindowInteractor::Start)
    .function("SetRenderWindow", &vtkRenderWindowInteractor::SetRenderWindow,
      emscripten::allow_raw_pointers());

  // vtkSDL2OpenGLRenderWindow ----------------------------------------
  emscripten::class_<vtkSDL2OpenGLRenderWindow, emscripten::base<vtkRenderWindow>>(
    "vtkSDL2OpenGLRenderWindow")
    .constructor(&vtkSDL2OpenGLRenderWindow::New, emscripten::allow_raw_pointers())
    .function("Frame", &vtkSDL2OpenGLRenderWindow::Frame)
    .function("SetSize",
      emscripten::select_overload<void(vtkSDL2OpenGLRenderWindow&, int, int)>(
        [](vtkSDL2OpenGLRenderWindow& self, int w, int h) {
          self.vtkSDL2OpenGLRenderWindow::SetSize(w, h);
        }));

  // vtkSDL2RenderWindowInteractor ------------------------------------
  emscripten::class_<vtkSDL2RenderWindowInteractor, emscripten::base<vtkRenderWindowInteractor>>(
    "vtkSDL2RenderWindowInteractor")
    .constructor(&vtkSDL2RenderWindowInteractor::New, emscripten::allow_raw_pointers())
    .function("AddEventHandler", &vtkSDL2RenderWindowInteractor::AddEventHandler);

  // vtkSphereSource -------------------------------------------------
  emscripten::class_<vtkSphereSource, emscripten::base<vtkAlgorithm>>("vtkSphereSource")
    .constructor(&vtkSphereSource::New, emscripten::allow_raw_pointers())
    .function("SetThetaResolution", &vtkSphereSource::SetThetaResolution)
    .function("SetPhiResolution", &vtkSphereSource::SetPhiResolution);

  // vtkViewport ------------------------------------------------------
  emscripten::class_<vtkViewport>("vtkViewport")
    .function("SetBackground",
      emscripten::select_overload<void(vtkViewport&, double, double, double)>(
        [](vtkViewport& self, double r, double g, double b) {
          self.vtkViewport::SetBackground(r, g, b);
        }));
}