/*=========================================================================
Program: Visualization Toolkit
Module: TestAngleWidget2D.cxx
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.
=========================================================================*/
//
// This example tests the vtkAngleWidget.
// First include the required header files for the VTK classes we are using.
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include "vtkActor.h"
#include "vtkAngleRepresentation2D.h"
#include "vtkAngleWidget.h"
#include "vtkAxisActor2D.h"
#include "vtkCommand.h"
#include "vtkCoordinate.h"
#include "vtkHandleWidget.h"
#include "vtkMath.h"
#include "vtkPointHandleRepresentation2D.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty2D.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
#include "vtkSphereSource.h"
#include "vtkTesting.h"
#include <myAngleWidget.h>
#include <myAngleRepresentation2D.h>
#include<vtkOutputWindow.h>
namespace
{
const char TestAngleWidget2DEventLog[] = "# StreamVersion 1\n"
"EnterEvent 185 1 0 0 0 0 0\n"
"MouseMoveEvent 179 19 0 0 0 0 0\n"
"MouseMoveEvent 175 35 0 0 0 0 0\n"
"MouseMoveEvent 173 49 0 0 0 0 0\n"
"MouseMoveEvent 171 61 0 0 0 0 0\n"
"MouseMoveEvent 171 71 0 0 0 0 0\n"
"MouseMoveEvent 169 79 0 0 0 0 0\n"
"MouseMoveEvent 169 82 0 0 0 0 0\n"
"MouseMoveEvent 169 85 0 0 0 0 0\n"
"MouseMoveEvent 169 88 0 0 0 0 0\n"
"MouseMoveEvent 169 90 0 0 0 0 0\n"
"MouseMoveEvent 168 92 0 0 0 0 0\n"
"MouseMoveEvent 168 93 0 0 0 0 0\n"
"MouseMoveEvent 168 94 0 0 0 0 0\n"
"MouseMoveEvent 168 95 0 0 0 0 0\n"
"MouseMoveEvent 168 96 0 0 0 0 0\n"
"MouseMoveEvent 168 98 0 0 0 0 0\n"
"MouseMoveEvent 167 99 0 0 0 0 0\n"
"MouseMoveEvent 167 100 0 0 0 0 0\n"
"MouseMoveEvent 167 102 0 0 0 0 0\n"
"MouseMoveEvent 166 104 0 0 0 0 0\n"
"MouseMoveEvent 166 107 0 0 0 0 0\n"
"MouseMoveEvent 165 109 0 0 0 0 0\n"
"MouseMoveEvent 164 111 0 0 0 0 0\n"
"MouseMoveEvent 163 113 0 0 0 0 0\n"
"MouseMoveEvent 162 115 0 0 0 0 0\n"
"MouseMoveEvent 160 116 0 0 0 0 0\n"
"MouseMoveEvent 154 122 0 0 0 0 0\n"
"MouseMoveEvent 148 128 0 0 0 0 0\n"
"MouseMoveEvent 142 132 0 0 0 0 0\n"
"MouseMoveEvent 136 138 0 0 0 0 0\n"
"MouseMoveEvent 134 139 0 0 0 0 0\n"
"MouseMoveEvent 130 143 0 0 0 0 0\n"
"MouseMoveEvent 128 144 0 0 0 0 0\n"
"MouseMoveEvent 126 145 0 0 0 0 0\n"
"MouseMoveEvent 124 146 0 0 0 0 0\n"
"MouseMoveEvent 124 147 0 0 0 0 0\n"
"MouseMoveEvent 122 147 0 0 0 0 0\n"
"MouseMoveEvent 121 148 0 0 0 0 0\n"
"MouseMoveEvent 120 148 0 0 0 0 0\n"
"MouseMoveEvent 119 149 0 0 0 0 0\n"
"MouseMoveEvent 118 150 0 0 0 0 0\n"
"MouseMoveEvent 116 151 0 0 0 0 0\n"
"MouseMoveEvent 116 152 0 0 0 0 0\n"
"MouseMoveEvent 115 152 0 0 0 0 0\n"
"MouseMoveEvent 114 152 0 0 0 0 0\n"
"MouseMoveEvent 113 153 0 0 0 0 0\n"
"MouseMoveEvent 112 154 0 0 0 0 0\n"
"MouseMoveEvent 111 155 0 0 0 0 0\n"
"MouseMoveEvent 110 156 0 0 0 0 0\n"
"MouseMoveEvent 110 157 0 0 0 0 0\n"
"MouseMoveEvent 109 158 0 0 0 0 0\n"
"MouseMoveEvent 108 158 0 0 0 0 0\n"
"MouseMoveEvent 108 159 0 0 0 0 0\n"
"MouseMoveEvent 107 159 0 0 0 0 0\n"
"MouseMoveEvent 107 160 0 0 0 0 0\n"
"MouseMoveEvent 106 161 0 0 0 0 0\n"
"MouseMoveEvent 106 162 0 0 0 0 0\n"
"MouseMoveEvent 105 162 0 0 0 0 0\n"
"MouseMoveEvent 104 163 0 0 0 0 0\n"
"MouseMoveEvent 103 163 0 0 0 0 0\n"
"MouseMoveEvent 102 164 0 0 0 0 0\n"
"MouseMoveEvent 101 164 0 0 0 0 0\n"
"MouseMoveEvent 101 165 0 0 0 0 0\n"
"MouseMoveEvent 100 166 0 0 0 0 0\n"
"MouseMoveEvent 99 167 0 0 0 0 0\n"
"MouseMoveEvent 98 168 0 0 0 0 0\n"
"MouseMoveEvent 98 169 0 0 0 0 0\n"
"MouseMoveEvent 97 169 0 0 0 0 0\n"
"MouseMoveEvent 96 169 0 0 0 0 0\n"
"MouseMoveEvent 95 170 0 0 0 0 0\n"
"MouseMoveEvent 95 171 0 0 0 0 0\n"
"MouseMoveEvent 93 172 0 0 0 0 0\n"
"MouseMoveEvent 92 172 0 0 0 0 0\n"
"MouseMoveEvent 86 170 0 0 0 0 0\n"
"MouseMoveEvent 85 170 0 0 0 0 0\n"
"MouseMoveEvent 83 169 0 0 0 0 0\n"
"MouseMoveEvent 82 169 0 0 0 0 0\n"
"MouseMoveEvent 81 169 0 0 0 0 0\n"
"MouseMoveEvent 80 169 0 0 0 0 0\n"
"MouseMoveEvent 79 169 0 0 0 0 0\n"
"MouseMoveEvent 78 169 0 0 0 0 0\n"
"MouseMoveEvent 77 169 0 0 0 0 0\n"
"MouseMoveEvent 76 170 0 0 0 0 0\n"
"MouseMoveEvent 75 170 0 0 0 0 0\n"
"MouseMoveEvent 74 171 0 0 0 0 0\n"
"MouseMoveEvent 73 171 0 0 0 0 0\n"
"MouseMoveEvent 72 171 0 0 0 0 0\n"
"MouseMoveEvent 71 172 0 0 0 0 0\n"
"MouseMoveEvent 70 172 0 0 0 0 0\n"
"MouseMoveEvent 70 173 0 0 0 0 0\n"
"MouseMoveEvent 69 173 0 0 0 0 0\n"
"MouseMoveEvent 69 174 0 0 0 0 0\n"
"MouseMoveEvent 68 175 0 0 0 0 0\n"
"MouseMoveEvent 64 179 0 0 0 0 0\n"
"MouseMoveEvent 62 180 0 0 0 0 0\n"
"MouseMoveEvent 61 181 0 0 0 0 0\n"
"MouseMoveEvent 60 183 0 0 0 0 0\n"
"MouseMoveEvent 59 184 0 0 0 0 0\n"
"MouseMoveEvent 58 185 0 0 0 0 0\n"
"MouseMoveEvent 57 187 0 0 0 0 0\n"
"MouseMoveEvent 56 187 0 0 0 0 0\n"
"MouseMoveEvent 56 188 0 0 0 0 0\n"
"MouseMoveEvent 55 188 0 0 0 0 0\n"
"MouseMoveEvent 55 189 0 0 0 0 0\n"
"MouseMoveEvent 56 189 0 0 0 0 0\n"
"MouseMoveEvent 57 189 0 0 0 0 0\n"
"MouseMoveEvent 58 189 0 0 0 0 0\n"
"MouseMoveEvent 59 189 0 0 0 0 0\n"
"MouseMoveEvent 60 189 0 0 0 0 0\n"
"MouseMoveEvent 61 189 0 0 0 0 0\n"
"LeftButtonPressEvent 61 189 0 0 0 0 0\n"
"RenderEvent 61 189 0 0 0 0 0\n"
"LeftButtonReleaseEvent 61 189 0 0 0 0 0\n"
"MouseMoveEvent 61 187 0 0 0 0 0\n"
"RenderEvent 61 187 0 0 0 0 0\n"
"MouseMoveEvent 61 185 0 0 0 0 0\n"
"RenderEvent 61 185 0 0 0 0 0\n"
"MouseMoveEvent 61 184 0 0 0 0 0\n"
"RenderEvent 61 184 0 0 0 0 0\n"
"MouseMoveEvent 61 181 0 0 0 0 0\n"
"RenderEvent 61 181 0 0 0 0 0\n"
"MouseMoveEvent 58 172 0 0 0 0 0\n"
"RenderEvent 58 172 0 0 0 0 0\n"
"MouseMoveEvent 58 169 0 0 0 0 0\n"
"RenderEvent 58 169 0 0 0 0 0\n"
"MouseMoveEvent 56 161 0 0 0 0 0\n"
"RenderEvent 56 161 0 0 0 0 0\n"
"MouseMoveEvent 52 143 0 0 0 0 0\n"
"RenderEvent 52 143 0 0 0 0 0\n"
"MouseMoveEvent 51 141 0 0 0 0 0\n"
"RenderEvent 51 141 0 0 0 0 0\n"
"MouseMoveEvent 41 123 0 0 0 0 0\n"
"RenderEvent 41 123 0 0 0 0 0\n"
"MouseMoveEvent 40 121 0 0 0 0 0\n"
"RenderEvent 40 121 0 0 0 0 0\n"
"MouseMoveEvent 33 109 0 0 0 0 0\n"
"RenderEvent 33 109 0 0 0 0 0\n"
"MouseMoveEvent 32 107 0 0 0 0 0\n"
"RenderEvent 32 107 0 0 0 0 0\n"
"MouseMoveEvent 28 103 0 0 0 0 0\n"
"RenderEvent 28 103 0 0 0 0 0\n"
"MouseMoveEvent 27 102 0 0 0 0 0\n"
"RenderEvent 27 102 0 0 0 0 0\n"
"MouseMoveEvent 26 100 0 0 0 0 0\n"
"RenderEvent 26 100 0 0 0 0 0\n"
"MouseMoveEvent 25 99 0 0 0 0 0\n"
"RenderEvent 25 99 0 0 0 0 0\n"
"MouseMoveEvent 22 95 0 0 0 0 0\n"
"RenderEvent 22 95 0 0 0 0 0\n"
"MouseMoveEvent 18 91 0 0 0 0 0\n"
"RenderEvent 18 91 0 0 0 0 0\n"
"MouseMoveEvent 12 85 0 0 0 0 0\n"
"RenderEvent 12 85 0 0 0 0 0\n"
"MouseMoveEvent 12 84 0 0 0 0 0\n"
"RenderEvent 12 84 0 0 0 0 0\n"
"MouseMoveEvent 10 83 0 0 0 0 0\n"
"RenderEvent 10 83 0 0 0 0 0\n"
"MouseMoveEvent 9 82 0 0 0 0 0\n"
"RenderEvent 9 82 0 0 0 0 0\n"
"MouseMoveEvent 9 80 0 0 0 0 0\n"
"RenderEvent 9 80 0 0 0 0 0\n"
"MouseMoveEvent 9 76 0 0 0 0 0\n"
"RenderEvent 9 76 0 0 0 0 0\n"
"MouseMoveEvent 9 74 0 0 0 0 0\n"
"RenderEvent 9 74 0 0 0 0 0\n"
"MouseMoveEvent 9 73 0 0 0 0 0\n"
"RenderEvent 9 73 0 0 0 0 0\n"
"MouseMoveEvent 10 72 0 0 0 0 0\n"
"RenderEvent 10 72 0 0 0 0 0\n"
"MouseMoveEvent 12 71 0 0 0 0 0\n"
"RenderEvent 12 71 0 0 0 0 0\n"
"MouseMoveEvent 14 71 0 0 0 0 0\n"
"RenderEvent 14 71 0 0 0 0 0\n"
"MouseMoveEvent 16 71 0 0 0 0 0\n"
"RenderEvent 16 71 0 0 0 0 0\n"
"MouseMoveEvent 16 70 0 0 0 0 0\n"
"RenderEvent 16 70 0 0 0 0 0\n"
"MouseMoveEvent 20 68 0 0 0 0 0\n"
"RenderEvent 20 68 0 0 0 0 0\n"
"MouseMoveEvent 21 67 0 0 0 0 0\n"
"RenderEvent 21 67 0 0 0 0 0\n"
"MouseMoveEvent 24 66 0 0 0 0 0\n"
"RenderEvent 24 66 0 0 0 0 0\n"
"MouseMoveEvent 25 66 0 0 0 0 0\n"
"RenderEvent 25 66 0 0 0 0 0\n"
"LeftButtonPressEvent 25 66 0 0 0 0 0\n"
"RenderEvent 25 66 0 0 0 0 0\n"
"LeftButtonReleaseEvent 25 66 0 0 0 0 0\n"
"MouseMoveEvent 26 66 0 0 0 0 0\n"
"RenderEvent 26 66 0 0 0 0 0\n"
"MouseMoveEvent 27 66 0 0 0 0 0\n"
"RenderEvent 27 66 0 0 0 0 0\n"
"MouseMoveEvent 28 66 0 0 0 0 0\n"
"RenderEvent 28 66 0 0 0 0 0\n"
"MouseMoveEvent 29 66 0 0 0 0 0\n"
"RenderEvent 29 66 0 0 0 0 0\n"
"MouseMoveEvent 37 67 0 0 0 0 0\n"
"RenderEvent 37 67 0 0 0 0 0\n"
"MouseMoveEvent 40 67 0 0 0 0 0\n"
"RenderEvent 40 67 0 0 0 0 0\n"
"MouseMoveEvent 54 67 0 0 0 0 0\n"
"RenderEvent 54 67 0 0 0 0 0\n"
"MouseMoveEvent 62 67 0 0 0 0 0\n"
"RenderEvent 62 67 0 0 0 0 0\n"
"MouseMoveEvent 76 67 0 0 0 0 0\n"
"RenderEvent 76 67 0 0 0 0 0\n"
"MouseMoveEvent 86 67 0 0 0 0 0\n"
"RenderEvent 86 67 0 0 0 0 0\n"
"MouseMoveEvent 114 67 0 0 0 0 0\n"
"RenderEvent 114 67 0 0 0 0 0\n"
"MouseMoveEvent 122 67 0 0 0 0 0\n"
"RenderEvent 122 67 0 0 0 0 0\n"
"MouseMoveEvent 146 67 0 0 0 0 0\n"
"RenderEvent 146 67 0 0 0 0 0\n"
"MouseMoveEvent 149 67 0 0 0 0 0\n"
"RenderEvent 149 67 0 0 0 0 0\n"
"MouseMoveEvent 157 67 0 0 0 0 0\n"
"RenderEvent 157 67 0 0 0 0 0\n"
"MouseMoveEvent 159 67 0 0 0 0 0\n"
"RenderEvent 159 67 0 0 0 0 0\n"
"MouseMoveEvent 163 69 0 0 0 0 0\n"
"RenderEvent 163 69 0 0 0 0 0\n"
"MouseMoveEvent 165 70 0 0 0 0 0\n"
"RenderEvent 165 70 0 0 0 0 0\n"
"MouseMoveEvent 170 71 0 0 0 0 0\n"
"RenderEvent 170 71 0 0 0 0 0\n"
"MouseMoveEvent 172 71 0 0 0 0 0\n"
"RenderEvent 172 71 0 0 0 0 0\n"
"MouseMoveEvent 196 71 0 0 0 0 0\n"
"RenderEvent 196 71 0 0 0 0 0\n"
"MouseMoveEvent 202 69 0 0 0 0 0\n"
"RenderEvent 202 69 0 0 0 0 0\n"
"MouseMoveEvent 223 69 0 0 0 0 0\n"
"RenderEvent 223 69 0 0 0 0 0\n"
"MouseMoveEvent 226 69 0 0 0 0 0\n"
"RenderEvent 226 69 0 0 0 0 0\n"
"MouseMoveEvent 236 71 0 0 0 0 0\n"
"RenderEvent 236 71 0 0 0 0 0\n"
"MouseMoveEvent 238 70 0 0 0 0 0\n"
"RenderEvent 238 70 0 0 0 0 0\n"
"MouseMoveEvent 240 71 0 0 0 0 0\n"
"RenderEvent 240 71 0 0 0 0 0\n"
"MouseMoveEvent 240 72 0 0 0 0 0\n"
"RenderEvent 240 72 0 0 0 0 0\n"
"MouseMoveEvent 240 73 0 0 0 0 0\n"
"RenderEvent 240 73 0 0 0 0 0\n"
"MouseMoveEvent 240 74 0 0 0 0 0\n"
"RenderEvent 240 74 0 0 0 0 0\n"
"MouseMoveEvent 240 75 0 0 0 0 0\n"
"RenderEvent 240 75 0 0 0 0 0\n"
"MouseMoveEvent 237 77 0 0 0 0 0\n"
"RenderEvent 237 77 0 0 0 0 0\n"
"MouseMoveEvent 235 78 0 0 0 0 0\n"
"RenderEvent 235 78 0 0 0 0 0\n"
"MouseMoveEvent 231 82 0 0 0 0 0\n"
"RenderEvent 231 82 0 0 0 0 0\n"
"MouseMoveEvent 229 83 0 0 0 0 0\n"
"RenderEvent 229 83 0 0 0 0 0\n"
"MouseMoveEvent 223 87 0 0 0 0 0\n"
"RenderEvent 223 87 0 0 0 0 0\n"
"MouseMoveEvent 221 88 0 0 0 0 0\n"
"RenderEvent 221 88 0 0 0 0 0\n"
"MouseMoveEvent 215 90 0 0 0 0 0\n"
"RenderEvent 215 90 0 0 0 0 0\n"
"MouseMoveEvent 209 94 0 0 0 0 0\n"
"RenderEvent 209 94 0 0 0 0 0\n"
"MouseMoveEvent 207 94 0 0 0 0 0\n"
"RenderEvent 207 94 0 0 0 0 0\n"
"MouseMoveEvent 200 100 0 0 0 0 0\n"
"RenderEvent 200 100 0 0 0 0 0\n"
"MouseMoveEvent 199 101 0 0 0 0 0\n"
"RenderEvent 199 101 0 0 0 0 0\n"
"MouseMoveEvent 198 102 0 0 0 0 0\n"
"RenderEvent 198 102 0 0 0 0 0\n"
"MouseMoveEvent 198 103 0 0 0 0 0\n"
"RenderEvent 198 103 0 0 0 0 0\n"
"MouseMoveEvent 198 104 0 0 0 0 0\n"
"RenderEvent 198 104 0 0 0 0 0\n"
"MouseMoveEvent 199 104 0 0 0 0 0\n"
"RenderEvent 199 104 0 0 0 0 0\n"
"MouseMoveEvent 199 105 0 0 0 0 0\n"
"RenderEvent 199 105 0 0 0 0 0\n"
"MouseMoveEvent 201 106 0 0 0 0 0\n"
"RenderEvent 201 106 0 0 0 0 0\n"
"MouseMoveEvent 203 106 0 0 0 0 0\n"
"RenderEvent 203 106 0 0 0 0 0\n"
"MouseMoveEvent 204 106 0 0 0 0 0\n"
"RenderEvent 204 106 0 0 0 0 0\n"
"MouseMoveEvent 206 107 0 0 0 0 0\n"
"RenderEvent 206 107 0 0 0 0 0\n"
"MouseMoveEvent 207 107 0 0 0 0 0\n"
"RenderEvent 207 107 0 0 0 0 0\n"
"LeftButtonPressEvent 207 107 0 0 0 0 0\n"
"RenderEvent 207 107 0 0 0 0 0\n"
"LeftButtonReleaseEvent 207 107 0 0 0 0 0\n"
"MouseMoveEvent 207 106 0 0 0 0 0\n"
"MouseMoveEvent 208 105 0 0 0 0 0\n"
"MouseMoveEvent 209 104 0 0 0 0 0\n"
"MouseMoveEvent 209 103 0 0 0 0 0\n"
"MouseMoveEvent 210 102 0 0 0 0 0\n"
"MouseMoveEvent 211 101 0 0 0 0 0\n"
"MouseMoveEvent 211 100 0 0 0 0 0\n"
"MouseMoveEvent 212 99 0 0 0 0 0\n"
"MouseMoveEvent 213 97 0 0 0 0 0\n"
"MouseMoveEvent 214 96 0 0 0 0 0\n"
"MouseMoveEvent 215 95 0 0 0 0 0\n"
"MouseMoveEvent 216 95 0 0 0 0 0\n"
"MouseMoveEvent 216 94 0 0 0 0 0\n"
"MouseMoveEvent 217 93 0 0 0 0 0\n"
"MouseMoveEvent 217 92 0 0 0 0 0\n"
"MouseMoveEvent 218 91 0 0 0 0 0\n"
"MouseMoveEvent 219 90 0 0 0 0 0\n"
"MouseMoveEvent 220 90 0 0 0 0 0\n"
"MouseMoveEvent 220 89 0 0 0 0 0\n"
"MouseMoveEvent 221 89 0 0 0 0 0\n"
"MouseMoveEvent 222 89 0 0 0 0 0\n"
"MouseMoveEvent 222 88 0 0 0 0 0\n"
"KeyPressEvent 222 88 0 0 113 1 q\n"
"CharEvent 222 88 0 0 113 1 q\n"
"ExitEvent 222 88 0 0 113 1 q\n";
// This callback is responsible for setting the angle label.
class vtkAngleCallback : public vtkCommand
{
public:
static vtkAngleCallback* New() { return new vtkAngleCallback; }
void Execute(vtkObject*, unsigned long eid, void*) override
{
if (eid == vtkCommand::PlacePointEvent)
{
std::cout << "point placed\n";
}
else if (eid == vtkCommand::InteractionEvent)
{
double point1[3], center[3], point2[3];
this->Rep->GetPoint1WorldPosition(point1);
this->Rep->GetCenterWorldPosition(center);
this->Rep->GetPoint2WorldPosition(point2);
std::cout << "Angle between "
<< "(" << point1[0] << "," << point1[1] << "," << point1[2] << "), (" << center[0]
<< "," << center[1] << "," << center[2] << ") and (" << point2[0] << ","
<< point2[1] << "," << point2[2] << ") is " << this->Rep->GetAngle() << std::endl;
}
}
vtkAngleRepresentation2D* Rep;
vtkAngleCallback()
: Rep(nullptr)
{
}
};
}
// The actual test function
int TestAngleWidget2D(int argc, char* argv[])
{
// Create the RenderWindow, Renderer and both Actors
vtkOutputWindow::SetGlobalWarningDisplay(0);
vtkSmartPointer<vtkRenderer> ren1 = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(ren1);
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
// Create a test pipeline
//
vtkSmartPointer<vtkSphereSource> ss = vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(ss->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// Create the widget and its representation
vtkSmartPointer<vtkPointHandleRepresentation2D> handle =
vtkSmartPointer<vtkPointHandleRepresentation2D>::New();
handle->GetProperty()->SetColor(1, 0, 0);
auto rep = vtkSmartPointer<vtkAngleRepresentation2D>::New();
rep->SetHandleRepresentation(handle);
auto widget = vtkSmartPointer<vtkAngleWidget>::New();
widget->SetInteractor(iren);
widget->CreateDefaultRepresentation();
widget->SetRepresentation(rep);
vtkSmartPointer<vtkAngleCallback> mcbk = vtkSmartPointer<vtkAngleCallback>::New();
mcbk->Rep = rep;
widget->AddObserver(vtkCommand::PlacePointEvent, mcbk);
widget->AddObserver(vtkCommand::InteractionEvent, mcbk);
// Add the actors to the renderer, set the background and size
//
ren1->AddActor(actor);
ren1->SetBackground(0.1, 0.2, 0.4);
renWin->SetSize(300, 300);
// render the image
//
iren->Initialize();
widget->On();
renWin->Render();
return vtkTesting::InteractorEventLoop(argc, argv, iren, TestAngleWidget2DEventLog);
}
int main(int argc, char* argv[]) {
cout<< TestAngleWidget2D(argc, argv);
}
And I want to use the vtk testing framework to test some of the classes I wrote myself, but I don’t know how to do it. Is there a tutorial starting from 0?