/*=========================================================================

  Program:   Visualization Toolkit
  Module:    TestGenericCell.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 test demonstrates the vtkCellCentersPointPlacer. The placer may
// be used to constrain handle widgets to the centers of cells. Thus it
// may be used by any of the widgets that use the handles (distance, angle
// etc).
//   Here we demonstrates constraining  the distance widget to the centers
// of various cells.
//
#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkCellArray.h>
#include <vtkUnstructuredGrid.h>
#include <vtkDataSetMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkCamera.h>
#include <vtkTransformFilter.h>
#include <vtkMatrixToLinearTransform.h>
#include <vtkMatrix4x4.h>
#include <vtkProperty.h>
#include <vtkDistanceWidget.h>
#include <vtkDistanceRepresentation2D.h>
#include <vtkCellCentersPointPlacer.h>
#include <vtkPointHandleRepresentation3D.h>
#include <vtkCellPicker.h>
#include <vtkAxisActor2D.h>
#include <vtkProperty2D.h>
#include <vtkTesting.h>

#include <vtkHexagonalPrism.h>
#include <vtkHexahedron.h>
#include <vtkPentagonalPrism.h>
#include <vtkPolyhedron.h>
#include <vtkPyramid.h>
#include <vtkTetra.h>
#include <vtkVoxel.h>
#include <vtkWedge.h>

#include <vector>

//---------------------------------------------------------------------------
char TestCellCentersPointPlacerEventLog[] =
"# StreamVersion 1\n"
"EnterEvent 384 226 0 0 0 0 0\n"
"MouseMoveEvent 384 226 0 0 0 0 0\n"
"RenderEvent 384 226 0 0 0 0 0\n"
"MouseMoveEvent 384 226 0 0 0 0 0\n"
"MouseMoveEvent 383 226 0 0 0 0 0\n"
"MouseMoveEvent 382 227 0 0 0 0 0\n"
"MouseMoveEvent 381 227 0 0 0 0 0\n"
"MouseMoveEvent 381 229 0 0 0 0 0\n"
"MouseMoveEvent 379 229 0 0 0 0 0\n"
"MouseMoveEvent 377 230 0 0 0 0 0\n"
"MouseMoveEvent 376 231 0 0 0 0 0\n"
"MouseMoveEvent 374 232 0 0 0 0 0\n"
"MouseMoveEvent 370 234 0 0 0 0 0\n"
"MouseMoveEvent 366 236 0 0 0 0 0\n"
"MouseMoveEvent 360 237 0 0 0 0 0\n"
"MouseMoveEvent 355 237 0 0 0 0 0\n"
"MouseMoveEvent 348 237 0 0 0 0 0\n"
"MouseMoveEvent 342 237 0 0 0 0 0\n"
"MouseMoveEvent 336 237 0 0 0 0 0\n"
"MouseMoveEvent 330 237 0 0 0 0 0\n"
"MouseMoveEvent 324 237 0 0 0 0 0\n"
"MouseMoveEvent 318 237 0 0 0 0 0\n"
"MouseMoveEvent 313 237 0 0 0 0 0\n"
"MouseMoveEvent 307 237 0 0 0 0 0\n"
"MouseMoveEvent 303 237 0 0 0 0 0\n"
"MouseMoveEvent 299 237 0 0 0 0 0\n"
"MouseMoveEvent 293 237 0 0 0 0 0\n"
"MouseMoveEvent 290 235 0 0 0 0 0\n"
"MouseMoveEvent 287 234 0 0 0 0 0\n"
"MouseMoveEvent 285 233 0 0 0 0 0\n"
"MouseMoveEvent 282 232 0 0 0 0 0\n"
"MouseMoveEvent 280 231 0 0 0 0 0\n"
"MouseMoveEvent 278 230 0 0 0 0 0\n"
"MouseMoveEvent 276 230 0 0 0 0 0\n"
"MouseMoveEvent 275 229 0 0 0 0 0\n"
"MouseMoveEvent 274 229 0 0 0 0 0\n"
"MouseMoveEvent 274 228 0 0 0 0 0\n"
"MouseMoveEvent 272 221 0 0 0 0 0\n"
"MouseMoveEvent 272 213 0 0 0 0 0\n"
"MouseMoveEvent 270 202 0 0 0 0 0\n"
"MouseMoveEvent 269 193 0 0 0 0 0\n"
"MouseMoveEvent 269 184 0 0 0 0 0\n"
"MouseMoveEvent 267 174 0 0 0 0 0\n"
"MouseMoveEvent 267 165 0 0 0 0 0\n"
"MouseMoveEvent 267 157 0 0 0 0 0\n"
"MouseMoveEvent 267 151 0 0 0 0 0\n"
"MouseMoveEvent 265 147 0 0 0 0 0\n"
"MouseMoveEvent 264 144 0 0 0 0 0\n"
"MouseMoveEvent 263 142 0 0 0 0 0\n"
"MouseMoveEvent 262 139 0 0 0 0 0\n"
"MouseMoveEvent 262 137 0 0 0 0 0\n"
"MouseMoveEvent 261 134 0 0 0 0 0\n"
"MouseMoveEvent 259 132 0 0 0 0 0\n"
"MouseMoveEvent 259 129 0 0 0 0 0\n"
"MouseMoveEvent 257 127 0 0 0 0 0\n"
"MouseMoveEvent 256 124 0 0 0 0 0\n"
"MouseMoveEvent 255 123 0 0 0 0 0\n"
"MouseMoveEvent 254 121 0 0 0 0 0\n"
"MouseMoveEvent 253 121 0 0 0 0 0\n"
"MouseMoveEvent 251 121 0 0 0 0 0\n"
"MouseMoveEvent 251 120 0 0 0 0 0\n"
"MouseMoveEvent 250 120 0 0 0 0 0\n"
"MouseMoveEvent 249 120 0 0 0 0 0\n"
"MouseMoveEvent 248 120 0 0 0 0 0\n"
"MouseMoveEvent 247 120 0 0 0 0 0\n"
"MouseMoveEvent 246 120 0 0 0 0 0\n"
"MouseMoveEvent 245 120 0 0 0 0 0\n"
"MouseMoveEvent 244 119 0 0 0 0 0\n"
"MouseMoveEvent 242 119 0 0 0 0 0\n"
"MouseMoveEvent 240 119 0 0 0 0 0\n"
"MouseMoveEvent 238 119 0 0 0 0 0\n"
"MouseMoveEvent 237 119 0 0 0 0 0\n"
"MouseMoveEvent 236 119 0 0 0 0 0\n"
"MouseMoveEvent 235 119 0 0 0 0 0\n"
"MouseMoveEvent 234 119 0 0 0 0 0\n"
"MouseMoveEvent 233 119 0 0 0 0 0\n"
"MouseMoveEvent 229 119 0 0 0 0 0\n"
"MouseMoveEvent 227 119 0 0 0 0 0\n"
"MouseMoveEvent 224 119 0 0 0 0 0\n"
"MouseMoveEvent 220 119 0 0 0 0 0\n"
"MouseMoveEvent 217 118 0 0 0 0 0\n"
"MouseMoveEvent 215 117 0 0 0 0 0\n"
"MouseMoveEvent 213 116 0 0 0 0 0\n"
"MouseMoveEvent 211 115 0 0 0 0 0\n"
"MouseMoveEvent 209 114 0 0 0 0 0\n"
"MouseMoveEvent 207 114 0 0 0 0 0\n"
"MouseMoveEvent 205 113 0 0 0 0 0\n"
"MouseMoveEvent 204 111 0 0 0 0 0\n"
"MouseMoveEvent 203 111 0 0 0 0 0\n"
"MouseMoveEvent 202 110 0 0 0 0 0\n"
"MouseMoveEvent 201 110 0 0 0 0 0\n"
"MouseMoveEvent 200 110 0 0 0 0 0\n"
"MouseMoveEvent 199 109 0 0 0 0 0\n"
"MouseMoveEvent 198 108 0 0 0 0 0\n"
"MouseMoveEvent 198 107 0 0 0 0 0\n"
"MouseMoveEvent 197 106 0 0 0 0 0\n"
"LeftButtonPressEvent 197 106 0 0 0 0 0\n"
"RenderEvent 197 106 0 0 0 0 0\n"
"LeftButtonReleaseEvent 197 106 0 0 0 0 0\n"
"MouseMoveEvent 197 106 0 0 0 0 0\n"
"RenderEvent 197 106 0 0 0 0 0\n"
"MouseMoveEvent 197 107 0 0 0 0 0\n"
"RenderEvent 197 107 0 0 0 0 0\n"
"MouseMoveEvent 198 107 0 0 0 0 0\n"
"RenderEvent 198 107 0 0 0 0 0\n"
"MouseMoveEvent 199 107 0 0 0 0 0\n"
"RenderEvent 199 107 0 0 0 0 0\n"
"MouseMoveEvent 199 108 0 0 0 0 0\n"
"RenderEvent 199 108 0 0 0 0 0\n"
"MouseMoveEvent 201 108 0 0 0 0 0\n"
"RenderEvent 201 108 0 0 0 0 0\n"
"MouseMoveEvent 201 109 0 0 0 0 0\n"
"RenderEvent 201 109 0 0 0 0 0\n"
"MouseMoveEvent 202 110 0 0 0 0 0\n"
"RenderEvent 202 110 0 0 0 0 0\n"
"MouseMoveEvent 204 110 0 0 0 0 0\n"
"RenderEvent 204 110 0 0 0 0 0\n"
"MouseMoveEvent 205 112 0 0 0 0 0\n"
"RenderEvent 205 112 0 0 0 0 0\n"
"MouseMoveEvent 208 114 0 0 0 0 0\n"
"RenderEvent 208 114 0 0 0 0 0\n"
"MouseMoveEvent 209 114 0 0 0 0 0\n"
"RenderEvent 209 114 0 0 0 0 0\n"
"MouseMoveEvent 211 116 0 0 0 0 0\n"
"RenderEvent 211 116 0 0 0 0 0\n"
"MouseMoveEvent 214 117 0 0 0 0 0\n"
"RenderEvent 214 117 0 0 0 0 0\n"
"MouseMoveEvent 216 119 0 0 0 0 0\n"
"RenderEvent 216 119 0 0 0 0 0\n"
"MouseMoveEvent 219 121 0 0 0 0 0\n"
"RenderEvent 219 121 0 0 0 0 0\n"
"MouseMoveEvent 222 122 0 0 0 0 0\n"
"RenderEvent 222 122 0 0 0 0 0\n"
"MouseMoveEvent 226 124 0 0 0 0 0\n"
"RenderEvent 226 124 0 0 0 0 0\n"
"MouseMoveEvent 229 126 0 0 0 0 0\n"
"RenderEvent 229 126 0 0 0 0 0\n"
"MouseMoveEvent 232 128 0 0 0 0 0\n"
"RenderEvent 232 128 0 0 0 0 0\n"
"MouseMoveEvent 236 130 0 0 0 0 0\n"
"RenderEvent 236 130 0 0 0 0 0\n"
"MouseMoveEvent 240 132 0 0 0 0 0\n"
"RenderEvent 240 132 0 0 0 0 0\n"
"MouseMoveEvent 245 133 0 0 0 0 0\n"
"RenderEvent 245 133 0 0 0 0 0\n"
"MouseMoveEvent 250 135 0 0 0 0 0\n"
"RenderEvent 250 135 0 0 0 0 0\n"
"MouseMoveEvent 255 138 0 0 0 0 0\n"
"RenderEvent 255 138 0 0 0 0 0\n"
"MouseMoveEvent 264 141 0 0 0 0 0\n"
"RenderEvent 264 141 0 0 0 0 0\n"
"MouseMoveEvent 269 142 0 0 0 0 0\n"
"RenderEvent 269 142 0 0 0 0 0\n"
"MouseMoveEvent 275 144 0 0 0 0 0\n"
"RenderEvent 275 144 0 0 0 0 0\n"
"MouseMoveEvent 279 146 0 0 0 0 0\n"
"RenderEvent 279 146 0 0 0 0 0\n"
"MouseMoveEvent 286 149 0 0 0 0 0\n"
"RenderEvent 286 149 0 0 0 0 0\n"
"MouseMoveEvent 288 151 0 0 0 0 0\n"
"RenderEvent 288 151 0 0 0 0 0\n"
"MouseMoveEvent 289 152 0 0 0 0 0\n"
"RenderEvent 289 152 0 0 0 0 0\n"
"MouseMoveEvent 292 155 0 0 0 0 0\n"
"RenderEvent 292 155 0 0 0 0 0\n"
"MouseMoveEvent 295 158 0 0 0 0 0\n"
"RenderEvent 295 158 0 0 0 0 0\n"
"MouseMoveEvent 296 159 0 0 0 0 0\n"
"RenderEvent 296 159 0 0 0 0 0\n"
"MouseMoveEvent 299 162 0 0 0 0 0\n"
"RenderEvent 299 162 0 0 0 0 0\n"
"MouseMoveEvent 302 164 0 0 0 0 0\n"
"RenderEvent 302 164 0 0 0 0 0\n"
"MouseMoveEvent 305 167 0 0 0 0 0\n"
"RenderEvent 305 167 0 0 0 0 0\n"
"MouseMoveEvent 307 168 0 0 0 0 0\n"
"RenderEvent 307 168 0 0 0 0 0\n"
"MouseMoveEvent 310 170 0 0 0 0 0\n"
"RenderEvent 310 170 0 0 0 0 0\n"
"MouseMoveEvent 313 171 0 0 0 0 0\n"
"RenderEvent 313 171 0 0 0 0 0\n"
"MouseMoveEvent 314 173 0 0 0 0 0\n"
"RenderEvent 314 173 0 0 0 0 0\n"
"MouseMoveEvent 317 175 0 0 0 0 0\n"
"RenderEvent 317 175 0 0 0 0 0\n"
"MouseMoveEvent 319 177 0 0 0 0 0\n"
"RenderEvent 319 177 0 0 0 0 0\n"
"MouseMoveEvent 321 179 0 0 0 0 0\n"
"RenderEvent 321 179 0 0 0 0 0\n"
"MouseMoveEvent 323 180 0 0 0 0 0\n"
"RenderEvent 323 180 0 0 0 0 0\n"
"MouseMoveEvent 325 181 0 0 0 0 0\n"
"RenderEvent 325 181 0 0 0 0 0\n"
"MouseMoveEvent 326 182 0 0 0 0 0\n"
"RenderEvent 326 182 0 0 0 0 0\n"
"MouseMoveEvent 330 185 0 0 0 0 0\n"
"RenderEvent 330 185 0 0 0 0 0\n"
"MouseMoveEvent 332 186 0 0 0 0 0\n"
"RenderEvent 332 186 0 0 0 0 0\n"
"MouseMoveEvent 333 187 0 0 0 0 0\n"
"RenderEvent 333 187 0 0 0 0 0\n"
"MouseMoveEvent 336 188 0 0 0 0 0\n"
"RenderEvent 336 188 0 0 0 0 0\n"
"MouseMoveEvent 337 189 0 0 0 0 0\n"
"RenderEvent 337 189 0 0 0 0 0\n"
"MouseMoveEvent 339 190 0 0 0 0 0\n"
"RenderEvent 339 190 0 0 0 0 0\n"
"MouseMoveEvent 340 190 0 0 0 0 0\n"
"RenderEvent 340 190 0 0 0 0 0\n"
"MouseMoveEvent 341 191 0 0 0 0 0\n"
"RenderEvent 341 191 0 0 0 0 0\n"
"MouseMoveEvent 342 191 0 0 0 0 0\n"
"RenderEvent 342 191 0 0 0 0 0\n"
"MouseMoveEvent 343 192 0 0 0 0 0\n"
"RenderEvent 343 192 0 0 0 0 0\n"
"MouseMoveEvent 344 193 0 0 0 0 0\n"
"RenderEvent 344 193 0 0 0 0 0\n"
"MouseMoveEvent 345 193 0 0 0 0 0\n"
"RenderEvent 345 193 0 0 0 0 0\n"
"MouseMoveEvent 346 193 0 0 0 0 0\n"
"RenderEvent 346 193 0 0 0 0 0\n"
"MouseMoveEvent 347 193 0 0 0 0 0\n"
"RenderEvent 347 193 0 0 0 0 0\n"
"MouseMoveEvent 347 194 0 0 0 0 0\n"
"RenderEvent 347 194 0 0 0 0 0\n"
"MouseMoveEvent 348 194 0 0 0 0 0\n"
"RenderEvent 348 194 0 0 0 0 0\n"
"MouseMoveEvent 349 194 0 0 0 0 0\n"
"RenderEvent 349 194 0 0 0 0 0\n"
"MouseMoveEvent 350 194 0 0 0 0 0\n"
"RenderEvent 350 194 0 0 0 0 0\n"
"MouseMoveEvent 350 195 0 0 0 0 0\n"
"RenderEvent 350 195 0 0 0 0 0\n"
"MouseMoveEvent 351 195 0 0 0 0 0\n"
"RenderEvent 351 195 0 0 0 0 0\n"
"MouseMoveEvent 352 195 0 0 0 0 0\n"
"RenderEvent 352 195 0 0 0 0 0\n"
"MouseMoveEvent 353 195 0 0 0 0 0\n"
"RenderEvent 353 195 0 0 0 0 0\n"
"MouseMoveEvent 354 195 0 0 0 0 0\n"
"RenderEvent 354 195 0 0 0 0 0\n"
"MouseMoveEvent 355 195 0 0 0 0 0\n"
"RenderEvent 355 195 0 0 0 0 0\n"
"MouseMoveEvent 356 195 0 0 0 0 0\n"
"RenderEvent 356 195 0 0 0 0 0\n"
"MouseMoveEvent 357 195 0 0 0 0 0\n"
"RenderEvent 357 195 0 0 0 0 0\n"
"MouseMoveEvent 357 194 0 0 0 0 0\n"
"RenderEvent 357 194 0 0 0 0 0\n"
"MouseMoveEvent 359 194 0 0 0 0 0\n"
"RenderEvent 359 194 0 0 0 0 0\n"
"MouseMoveEvent 360 194 0 0 0 0 0\n"
"RenderEvent 360 194 0 0 0 0 0\n"
"MouseMoveEvent 361 194 0 0 0 0 0\n"
"RenderEvent 361 194 0 0 0 0 0\n"
"MouseMoveEvent 362 194 0 0 0 0 0\n"
"RenderEvent 362 194 0 0 0 0 0\n"
"LeftButtonPressEvent 362 194 0 0 0 0 0\n"
"RenderEvent 362 194 0 0 0 0 0\n"
"LeftButtonReleaseEvent 362 194 0 0 0 0 0\n"
"MouseMoveEvent 362 194 0 0 0 0 0\n"
"RenderEvent 362 194 0 0 0 0 0\n"
"MouseMoveEvent 360 194 0 0 0 0 0\n"
"RenderEvent 360 194 0 0 0 0 0\n"
"MouseMoveEvent 357 194 0 0 0 0 0\n"
"RenderEvent 357 194 0 0 0 0 0\n"
"MouseMoveEvent 354 194 0 0 0 0 0\n"
"RenderEvent 354 194 0 0 0 0 0\n"
"MouseMoveEvent 350 194 0 0 0 0 0\n"
"RenderEvent 350 194 0 0 0 0 0\n"
"MouseMoveEvent 344 194 0 0 0 0 0\n"
"RenderEvent 344 194 0 0 0 0 0\n"
"MouseMoveEvent 336 194 0 0 0 0 0\n"
"RenderEvent 336 194 0 0 0 0 0\n"
"MouseMoveEvent 328 194 0 0 0 0 0\n"
"RenderEvent 328 194 0 0 0 0 0\n"
"MouseMoveEvent 320 192 0 0 0 0 0\n"
"RenderEvent 320 192 0 0 0 0 0\n"
"MouseMoveEvent 310 191 0 0 0 0 0\n"
"RenderEvent 310 191 0 0 0 0 0\n"
"MouseMoveEvent 302 188 0 0 0 0 0\n"
"RenderEvent 302 188 0 0 0 0 0\n"
"MouseMoveEvent 291 184 0 0 0 0 0\n"
"RenderEvent 291 184 0 0 0 0 0\n"
"MouseMoveEvent 280 179 0 0 0 0 0\n"
"RenderEvent 280 179 0 0 0 0 0\n"
"MouseMoveEvent 268 175 0 0 0 0 0\n"
"RenderEvent 268 175 0 0 0 0 0\n"
"MouseMoveEvent 258 169 0 0 0 0 0\n"
"RenderEvent 258 169 0 0 0 0 0\n"
"MouseMoveEvent 247 166 0 0 0 0 0\n"
"RenderEvent 247 166 0 0 0 0 0\n"
"MouseMoveEvent 238 162 0 0 0 0 0\n"
"RenderEvent 238 162 0 0 0 0 0\n"
"MouseMoveEvent 231 157 0 0 0 0 0\n"
"RenderEvent 231 157 0 0 0 0 0\n"
"MouseMoveEvent 224 153 0 0 0 0 0\n"
"RenderEvent 224 153 0 0 0 0 0\n"
"MouseMoveEvent 219 150 0 0 0 0 0\n"
"RenderEvent 219 150 0 0 0 0 0\n"
"MouseMoveEvent 214 146 0 0 0 0 0\n"
"RenderEvent 214 146 0 0 0 0 0\n"
"MouseMoveEvent 211 143 0 0 0 0 0\n"
"RenderEvent 211 143 0 0 0 0 0\n"
"MouseMoveEvent 209 141 0 0 0 0 0\n"
"RenderEvent 209 141 0 0 0 0 0\n"
"MouseMoveEvent 209 139 0 0 0 0 0\n"
"RenderEvent 209 139 0 0 0 0 0\n"
"MouseMoveEvent 209 138 0 0 0 0 0\n"
"RenderEvent 209 138 0 0 0 0 0\n"
"MouseMoveEvent 209 136 0 0 0 0 0\n"
"RenderEvent 209 136 0 0 0 0 0\n"
"MouseMoveEvent 209 134 0 0 0 0 0\n"
"RenderEvent 209 134 0 0 0 0 0\n"
"MouseMoveEvent 209 133 0 0 0 0 0\n"
"RenderEvent 209 133 0 0 0 0 0\n"
"MouseMoveEvent 209 132 0 0 0 0 0\n"
"RenderEvent 209 132 0 0 0 0 0\n"
"MouseMoveEvent 209 131 0 0 0 0 0\n"
"RenderEvent 209 131 0 0 0 0 0\n"
"MouseMoveEvent 209 130 0 0 0 0 0\n"
"RenderEvent 209 130 0 0 0 0 0\n"
"MouseMoveEvent 209 129 0 0 0 0 0\n"
"RenderEvent 209 129 0 0 0 0 0\n"
"MouseMoveEvent 210 128 0 0 0 0 0\n"
"RenderEvent 210 128 0 0 0 0 0\n"
"MouseMoveEvent 212 127 0 0 0 0 0\n"
"RenderEvent 212 127 0 0 0 0 0\n"
"MouseMoveEvent 214 126 0 0 0 0 0\n"
"RenderEvent 214 126 0 0 0 0 0\n"
"MouseMoveEvent 215 126 0 0 0 0 0\n"
"RenderEvent 215 126 0 0 0 0 0\n"
"MouseMoveEvent 215 125 0 0 0 0 0\n"
"RenderEvent 215 125 0 0 0 0 0\n"
"MouseMoveEvent 215 124 0 0 0 0 0\n"
"RenderEvent 215 124 0 0 0 0 0\n"
"MouseMoveEvent 214 123 0 0 0 0 0\n"
"RenderEvent 214 123 0 0 0 0 0\n"
"MouseMoveEvent 213 122 0 0 0 0 0\n"
"RenderEvent 213 122 0 0 0 0 0\n"
"MouseMoveEvent 212 121 0 0 0 0 0\n"
"RenderEvent 212 121 0 0 0 0 0\n"
"MouseMoveEvent 211 118 0 0 0 0 0\n"
"RenderEvent 211 118 0 0 0 0 0\n"
"MouseMoveEvent 209 117 0 0 0 0 0\n"
"RenderEvent 209 117 0 0 0 0 0\n"
"MouseMoveEvent 209 116 0 0 0 0 0\n"
"RenderEvent 209 116 0 0 0 0 0\n"
"MouseMoveEvent 209 115 0 0 0 0 0\n"
"RenderEvent 209 115 0 0 0 0 0\n"
"MouseMoveEvent 208 114 0 0 0 0 0\n"
"RenderEvent 208 114 0 0 0 0 0\n"
"MouseMoveEvent 208 113 0 0 0 0 0\n"
"RenderEvent 208 113 0 0 0 0 0\n"
"MouseMoveEvent 207 113 0 0 0 0 0\n"
"RenderEvent 207 113 0 0 0 0 0\n"
"MouseMoveEvent 207 112 0 0 0 0 0\n"
"RenderEvent 207 112 0 0 0 0 0\n"
"MouseMoveEvent 206 112 0 0 0 0 0\n"
"RenderEvent 206 112 0 0 0 0 0\n"
"MouseMoveEvent 205 112 0 0 0 0 0\n"
"RenderEvent 205 112 0 0 0 0 0\n"
"MouseMoveEvent 204 112 0 0 0 0 0\n"
"RenderEvent 204 112 0 0 0 0 0\n"
"MouseMoveEvent 203 112 0 0 0 0 0\n"
"RenderEvent 203 112 0 0 0 0 0\n"
"MouseMoveEvent 203 111 0 0 0 0 0\n"
"RenderEvent 203 111 0 0 0 0 0\n"
"MouseMoveEvent 203 110 0 0 0 0 0\n"
"RenderEvent 203 110 0 0 0 0 0\n"
"MouseMoveEvent 202 110 0 0 0 0 0\n"
"RenderEvent 202 110 0 0 0 0 0\n"
"LeftButtonPressEvent 202 110 0 0 0 0 0\n"
"RenderEvent 202 110 0 0 0 0 0\n"
"MouseMoveEvent 202 111 0 0 0 0 0\n"
"RenderEvent 202 111 0 0 0 0 0\n"
"MouseMoveEvent 202 112 0 0 0 0 0\n"
"RenderEvent 202 112 0 0 0 0 0\n"
"MouseMoveEvent 202 114 0 0 0 0 0\n"
"RenderEvent 202 114 0 0 0 0 0\n"
"MouseMoveEvent 202 116 0 0 0 0 0\n"
"RenderEvent 202 116 0 0 0 0 0\n"
"MouseMoveEvent 202 123 0 0 0 0 0\n"
"RenderEvent 202 123 0 0 0 0 0\n"
"MouseMoveEvent 202 127 0 0 0 0 0\n"
"RenderEvent 202 127 0 0 0 0 0\n"
"MouseMoveEvent 202 132 0 0 0 0 0\n"
"RenderEvent 202 132 0 0 0 0 0\n"
"MouseMoveEvent 202 139 0 0 0 0 0\n"
"RenderEvent 202 139 0 0 0 0 0\n"
"MouseMoveEvent 202 144 0 0 0 0 0\n"
"RenderEvent 202 144 0 0 0 0 0\n"
"MouseMoveEvent 202 152 0 0 0 0 0\n"
"RenderEvent 202 152 0 0 0 0 0\n"
"MouseMoveEvent 202 159 0 0 0 0 0\n"
"RenderEvent 202 159 0 0 0 0 0\n"
"MouseMoveEvent 202 166 0 0 0 0 0\n"
"RenderEvent 202 166 0 0 0 0 0\n"
"MouseMoveEvent 202 174 0 0 0 0 0\n"
"RenderEvent 202 174 0 0 0 0 0\n"
"MouseMoveEvent 202 179 0 0 0 0 0\n"
"RenderEvent 202 179 0 0 0 0 0\n"
"MouseMoveEvent 202 185 0 0 0 0 0\n"
"RenderEvent 202 185 0 0 0 0 0\n"
"MouseMoveEvent 202 189 0 0 0 0 0\n"
"RenderEvent 202 189 0 0 0 0 0\n"
"MouseMoveEvent 202 195 0 0 0 0 0\n"
"RenderEvent 202 195 0 0 0 0 0\n"
"MouseMoveEvent 202 199 0 0 0 0 0\n"
"RenderEvent 202 199 0 0 0 0 0\n"
"MouseMoveEvent 202 203 0 0 0 0 0\n"
"RenderEvent 202 203 0 0 0 0 0\n"
"MouseMoveEvent 202 206 0 0 0 0 0\n"
"RenderEvent 202 206 0 0 0 0 0\n"
"MouseMoveEvent 202 209 0 0 0 0 0\n"
"RenderEvent 202 209 0 0 0 0 0\n"
"MouseMoveEvent 202 211 0 0 0 0 0\n"
"RenderEvent 202 211 0 0 0 0 0\n"
"MouseMoveEvent 202 212 0 0 0 0 0\n"
"RenderEvent 202 212 0 0 0 0 0\n"
"MouseMoveEvent 202 215 0 0 0 0 0\n"
"RenderEvent 202 215 0 0 0 0 0\n"
"MouseMoveEvent 202 216 0 0 0 0 0\n"
"RenderEvent 202 216 0 0 0 0 0\n"
"MouseMoveEvent 203 217 0 0 0 0 0\n"
"RenderEvent 203 217 0 0 0 0 0\n"
"MouseMoveEvent 203 218 0 0 0 0 0\n"
"RenderEvent 203 218 0 0 0 0 0\n"
"MouseMoveEvent 203 219 0 0 0 0 0\n"
"RenderEvent 203 219 0 0 0 0 0\n"
"MouseMoveEvent 203 220 0 0 0 0 0\n"
"RenderEvent 203 220 0 0 0 0 0\n"
"MouseMoveEvent 203 221 0 0 0 0 0\n"
"RenderEvent 203 221 0 0 0 0 0\n"
"MouseMoveEvent 203 222 0 0 0 0 0\n"
"RenderEvent 203 222 0 0 0 0 0\n"
"MouseMoveEvent 203 223 0 0 0 0 0\n"
"RenderEvent 203 223 0 0 0 0 0\n"
"MouseMoveEvent 203 224 0 0 0 0 0\n"
"RenderEvent 203 224 0 0 0 0 0\n"
"MouseMoveEvent 203 226 0 0 0 0 0\n"
"RenderEvent 203 226 0 0 0 0 0\n"
"MouseMoveEvent 203 227 0 0 0 0 0\n"
"RenderEvent 203 227 0 0 0 0 0\n"
"MouseMoveEvent 203 228 0 0 0 0 0\n"
"RenderEvent 203 228 0 0 0 0 0\n"
"MouseMoveEvent 203 229 0 0 0 0 0\n"
"RenderEvent 203 229 0 0 0 0 0\n"
"MouseMoveEvent 203 230 0 0 0 0 0\n"
"RenderEvent 203 230 0 0 0 0 0\n"
"MouseMoveEvent 204 231 0 0 0 0 0\n"
"RenderEvent 204 231 0 0 0 0 0\n"
"MouseMoveEvent 204 233 0 0 0 0 0\n"
"RenderEvent 204 233 0 0 0 0 0\n"
"MouseMoveEvent 204 234 0 0 0 0 0\n"
"RenderEvent 204 234 0 0 0 0 0\n"
"MouseMoveEvent 204 235 0 0 0 0 0\n"
"RenderEvent 204 235 0 0 0 0 0\n"
"LeftButtonReleaseEvent 204 235 0 0 0 0 0\n"
"RenderEvent 204 235 0 0 0 0 0\n"
"MouseMoveEvent 204 235 0 0 0 0 0\n"
"RenderEvent 204 235 0 0 0 0 0\n"
"MouseMoveEvent 206 233 0 0 0 0 0\n"
"RenderEvent 206 233 0 0 0 0 0\n"
"MouseMoveEvent 209 232 0 0 0 0 0\n"
"RenderEvent 209 232 0 0 0 0 0\n"
"MouseMoveEvent 213 227 0 0 0 0 0\n"
"RenderEvent 213 227 0 0 0 0 0\n"
"MouseMoveEvent 220 224 0 0 0 0 0\n"
"RenderEvent 220 224 0 0 0 0 0\n"
"MouseMoveEvent 230 220 0 0 0 0 0\n"
"RenderEvent 230 220 0 0 0 0 0\n"
"MouseMoveEvent 241 213 0 0 0 0 0\n"
"RenderEvent 241 213 0 0 0 0 0\n"
"MouseMoveEvent 273 198 0 0 0 0 0\n"
"RenderEvent 273 198 0 0 0 0 0\n"
"MouseMoveEvent 286 191 0 0 0 0 0\n"
"RenderEvent 286 191 0 0 0 0 0\n"
"MouseMoveEvent 298 185 0 0 0 0 0\n"
"RenderEvent 298 185 0 0 0 0 0\n"
"MouseMoveEvent 311 180 0 0 0 0 0\n"
"RenderEvent 311 180 0 0 0 0 0\n"
"MouseMoveEvent 327 175 0 0 0 0 0\n"
"RenderEvent 327 175 0 0 0 0 0\n"
"MouseMoveEvent 334 173 0 0 0 0 0\n"
"RenderEvent 334 173 0 0 0 0 0\n"
"MouseMoveEvent 337 172 0 0 0 0 0\n"
"RenderEvent 337 172 0 0 0 0 0\n"
"MouseMoveEvent 341 172 0 0 0 0 0\n"
"RenderEvent 341 172 0 0 0 0 0\n"
"MouseMoveEvent 344 172 0 0 0 0 0\n"
"RenderEvent 344 172 0 0 0 0 0\n"
"MouseMoveEvent 345 172 0 0 0 0 0\n"
"RenderEvent 345 172 0 0 0 0 0\n"
"MouseMoveEvent 345 173 0 0 0 0 0\n"
"RenderEvent 345 173 0 0 0 0 0\n"
"MouseMoveEvent 345 174 0 0 0 0 0\n"
"RenderEvent 345 174 0 0 0 0 0\n"
"MouseMoveEvent 346 174 0 0 0 0 0\n"
"RenderEvent 346 174 0 0 0 0 0\n"
"MouseMoveEvent 346 175 0 0 0 0 0\n"
"RenderEvent 346 175 0 0 0 0 0\n"
"MouseMoveEvent 346 176 0 0 0 0 0\n"
"RenderEvent 346 176 0 0 0 0 0\n"
"MouseMoveEvent 346 177 0 0 0 0 0\n"
"RenderEvent 346 177 0 0 0 0 0\n"
"MouseMoveEvent 347 177 0 0 0 0 0\n"
"RenderEvent 347 177 0 0 0 0 0\n"
"MouseMoveEvent 348 178 0 0 0 0 0\n"
"RenderEvent 348 178 0 0 0 0 0\n"
"MouseMoveEvent 349 179 0 0 0 0 0\n"
"RenderEvent 349 179 0 0 0 0 0\n"
"MouseMoveEvent 350 179 0 0 0 0 0\n"
"RenderEvent 350 179 0 0 0 0 0\n"
"MouseMoveEvent 352 179 0 0 0 0 0\n"
"RenderEvent 352 179 0 0 0 0 0\n"
"MouseMoveEvent 353 179 0 0 0 0 0\n"
"RenderEvent 353 179 0 0 0 0 0\n"
"MouseMoveEvent 354 180 0 0 0 0 0\n"
"RenderEvent 354 180 0 0 0 0 0\n"
"MouseMoveEvent 355 181 0 0 0 0 0\n"
"RenderEvent 355 181 0 0 0 0 0\n"
"MouseMoveEvent 356 182 0 0 0 0 0\n"
"RenderEvent 356 182 0 0 0 0 0\n"
"MouseMoveEvent 356 183 0 0 0 0 0\n"
"RenderEvent 356 183 0 0 0 0 0\n"
"MouseMoveEvent 356 184 0 0 0 0 0\n"
"RenderEvent 356 184 0 0 0 0 0\n"
"MouseMoveEvent 356 185 0 0 0 0 0\n"
"RenderEvent 356 185 0 0 0 0 0\n"
"MouseMoveEvent 356 186 0 0 0 0 0\n"
"RenderEvent 356 186 0 0 0 0 0\n"
"MouseMoveEvent 356 187 0 0 0 0 0\n"
"RenderEvent 356 187 0 0 0 0 0\n"
"MouseMoveEvent 357 188 0 0 0 0 0\n"
"RenderEvent 357 188 0 0 0 0 0\n"
"MouseMoveEvent 357 189 0 0 0 0 0\n"
"RenderEvent 357 189 0 0 0 0 0\n"
"MouseMoveEvent 358 189 0 0 0 0 0\n"
"RenderEvent 358 189 0 0 0 0 0\n"
"MouseMoveEvent 359 190 0 0 0 0 0\n"
"RenderEvent 359 190 0 0 0 0 0\n"
"MouseMoveEvent 360 190 0 0 0 0 0\n"
"RenderEvent 360 190 0 0 0 0 0\n"
"MouseMoveEvent 361 190 0 0 0 0 0\n"
"RenderEvent 361 190 0 0 0 0 0\n"
"MouseMoveEvent 362 190 0 0 0 0 0\n"
"RenderEvent 362 190 0 0 0 0 0\n"
"MouseMoveEvent 362 191 0 0 0 0 0\n"
"RenderEvent 362 191 0 0 0 0 0\n"
"MouseMoveEvent 363 191 0 0 0 0 0\n"
"RenderEvent 363 191 0 0 0 0 0\n"
"MouseMoveEvent 363 192 0 0 0 0 0\n"
"RenderEvent 363 192 0 0 0 0 0\n"
"LeftButtonPressEvent 363 192 0 0 0 0 0\n"
"RenderEvent 363 192 0 0 0 0 0\n"
"MouseMoveEvent 363 193 0 0 0 0 0\n"
"RenderEvent 363 193 0 0 0 0 0\n"
"MouseMoveEvent 365 196 0 0 0 0 0\n"
"RenderEvent 365 196 0 0 0 0 0\n"
"MouseMoveEvent 367 198 0 0 0 0 0\n"
"RenderEvent 367 198 0 0 0 0 0\n"
"MouseMoveEvent 372 202 0 0 0 0 0\n"
"RenderEvent 372 202 0 0 0 0 0\n"
"MouseMoveEvent 383 213 0 0 0 0 0\n"
"RenderEvent 383 213 0 0 0 0 0\n"
"MouseMoveEvent 390 219 0 0 0 0 0\n"
"RenderEvent 390 219 0 0 0 0 0\n"
"MouseMoveEvent 397 226 0 0 0 0 0\n"
"RenderEvent 397 226 0 0 0 0 0\n"
"MouseMoveEvent 404 233 0 0 0 0 0\n"
"RenderEvent 404 233 0 0 0 0 0\n"
"MouseMoveEvent 412 239 0 0 0 0 0\n"
"RenderEvent 412 239 0 0 0 0 0\n"
"MouseMoveEvent 419 247 0 0 0 0 0\n"
"RenderEvent 419 247 0 0 0 0 0\n"
"MouseMoveEvent 429 255 0 0 0 0 0\n"
"RenderEvent 429 255 0 0 0 0 0\n"
"MouseMoveEvent 437 261 0 0 0 0 0\n"
"RenderEvent 437 261 0 0 0 0 0\n"
"MouseMoveEvent 445 270 0 0 0 0 0\n"
"RenderEvent 445 270 0 0 0 0 0\n"
"MouseMoveEvent 452 277 0 0 0 0 0\n"
"RenderEvent 452 277 0 0 0 0 0\n"
"MouseMoveEvent 458 284 0 0 0 0 0\n"
"RenderEvent 458 284 0 0 0 0 0\n"
"MouseMoveEvent 465 290 0 0 0 0 0\n"
"RenderEvent 465 290 0 0 0 0 0\n"
"MouseMoveEvent 471 295 0 0 0 0 0\n"
"RenderEvent 471 295 0 0 0 0 0\n"
"MouseMoveEvent 476 299 0 0 0 0 0\n"
"RenderEvent 476 299 0 0 0 0 0\n"
"MouseMoveEvent 482 304 0 0 0 0 0\n"
"RenderEvent 482 304 0 0 0 0 0\n"
"MouseMoveEvent 486 308 0 0 0 0 0\n"
"RenderEvent 486 308 0 0 0 0 0\n"
"MouseMoveEvent 488 310 0 0 0 0 0\n"
"RenderEvent 488 310 0 0 0 0 0\n"
"MouseMoveEvent 490 311 0 0 0 0 0\n"
"RenderEvent 490 311 0 0 0 0 0\n"
"MouseMoveEvent 491 312 0 0 0 0 0\n"
"RenderEvent 491 312 0 0 0 0 0\n"
"MouseMoveEvent 491 313 0 0 0 0 0\n"
"RenderEvent 491 313 0 0 0 0 0\n"
"MouseMoveEvent 491 314 0 0 0 0 0\n"
"RenderEvent 491 314 0 0 0 0 0\n"
"MouseMoveEvent 491 315 0 0 0 0 0\n"
"RenderEvent 491 315 0 0 0 0 0\n"
"LeftButtonReleaseEvent 491 315 0 0 0 0 0\n"
"RenderEvent 491 315 0 0 0 0 0\n"
"MouseMoveEvent 490 315 0 0 0 0 0\n"
"RenderEvent 490 315 0 0 0 0 0\n"
"MouseMoveEvent 487 315 0 0 0 0 0\n"
"RenderEvent 487 315 0 0 0 0 0\n"
"MouseMoveEvent 482 315 0 0 0 0 0\n"
"RenderEvent 482 315 0 0 0 0 0\n"
"MouseMoveEvent 475 314 0 0 0 0 0\n"
"RenderEvent 475 314 0 0 0 0 0\n"
"MouseMoveEvent 466 312 0 0 0 0 0\n"
"RenderEvent 466 312 0 0 0 0 0\n"
"MouseMoveEvent 455 310 0 0 0 0 0\n"
"RenderEvent 455 310 0 0 0 0 0\n"
"MouseMoveEvent 438 309 0 0 0 0 0\n"
"RenderEvent 438 309 0 0 0 0 0\n"
"MouseMoveEvent 415 306 0 0 0 0 0\n"
"RenderEvent 415 306 0 0 0 0 0\n"
"MouseMoveEvent 386 300 0 0 0 0 0\n"
"RenderEvent 386 300 0 0 0 0 0\n"
"MouseMoveEvent 354 295 0 0 0 0 0\n"
"RenderEvent 354 295 0 0 0 0 0\n"
"MouseMoveEvent 322 288 0 0 0 0 0\n"
"RenderEvent 322 288 0 0 0 0 0\n"
"MouseMoveEvent 287 279 0 0 0 0 0\n"
"RenderEvent 287 279 0 0 0 0 0\n"
"MouseMoveEvent 255 269 0 0 0 0 0\n"
"RenderEvent 255 269 0 0 0 0 0\n"
"MouseMoveEvent 230 263 0 0 0 0 0\n"
"RenderEvent 230 263 0 0 0 0 0\n"
"MouseMoveEvent 214 259 0 0 0 0 0\n"
"RenderEvent 214 259 0 0 0 0 0\n"
"MouseMoveEvent 202 256 0 0 0 0 0\n"
"RenderEvent 202 256 0 0 0 0 0\n"
"MouseMoveEvent 194 253 0 0 0 0 0\n"
"RenderEvent 194 253 0 0 0 0 0\n"
"MouseMoveEvent 189 250 0 0 0 0 0\n"
"RenderEvent 189 250 0 0 0 0 0\n"
"MouseMoveEvent 187 248 0 0 0 0 0\n"
"RenderEvent 187 248 0 0 0 0 0\n"
"MouseMoveEvent 185 247 0 0 0 0 0\n"
"RenderEvent 185 247 0 0 0 0 0\n"
"MouseMoveEvent 183 246 0 0 0 0 0\n"
"RenderEvent 183 246 0 0 0 0 0\n"
"MouseMoveEvent 183 245 0 0 0 0 0\n"
"RenderEvent 183 245 0 0 0 0 0\n"
"MouseMoveEvent 183 244 0 0 0 0 0\n"
"RenderEvent 183 244 0 0 0 0 0\n"
"MouseMoveEvent 182 244 0 0 0 0 0\n"
"RenderEvent 182 244 0 0 0 0 0\n"
"MouseMoveEvent 181 244 0 0 0 0 0\n"
"RenderEvent 181 244 0 0 0 0 0\n"
"MouseMoveEvent 180 243 0 0 0 0 0\n"
"RenderEvent 180 243 0 0 0 0 0\n"
"MouseMoveEvent 180 242 0 0 0 0 0\n"
"RenderEvent 180 242 0 0 0 0 0\n"
"MouseMoveEvent 179 241 0 0 0 0 0\n"
"RenderEvent 179 241 0 0 0 0 0\n"
"MouseMoveEvent 178 240 0 0 0 0 0\n"
"RenderEvent 178 240 0 0 0 0 0\n"
"MouseMoveEvent 178 239 0 0 0 0 0\n"
"RenderEvent 178 239 0 0 0 0 0\n"
"MouseMoveEvent 178 238 0 0 0 0 0\n"
"RenderEvent 178 238 0 0 0 0 0\n"
"MouseMoveEvent 178 237 0 0 0 0 0\n"
"RenderEvent 178 237 0 0 0 0 0\n"
"MouseMoveEvent 178 235 0 0 0 0 0\n"
"RenderEvent 178 235 0 0 0 0 0\n"
"MouseMoveEvent 178 233 0 0 0 0 0\n"
"RenderEvent 178 233 0 0 0 0 0\n"
"MouseMoveEvent 179 231 0 0 0 0 0\n"
"RenderEvent 179 231 0 0 0 0 0\n"
"MouseMoveEvent 183 228 0 0 0 0 0\n"
"RenderEvent 183 228 0 0 0 0 0\n"
"MouseMoveEvent 184 227 0 0 0 0 0\n"
"RenderEvent 184 227 0 0 0 0 0\n"
"MouseMoveEvent 185 227 0 0 0 0 0\n"
"RenderEvent 185 227 0 0 0 0 0\n"
"MouseMoveEvent 186 227 0 0 0 0 0\n"
"RenderEvent 186 227 0 0 0 0 0\n"
"MouseMoveEvent 187 227 0 0 0 0 0\n"
"RenderEvent 187 227 0 0 0 0 0\n"
"MouseMoveEvent 188 227 0 0 0 0 0\n"
"RenderEvent 188 227 0 0 0 0 0\n"
"MouseMoveEvent 189 228 0 0 0 0 0\n"
"RenderEvent 189 228 0 0 0 0 0\n"
"MouseMoveEvent 190 229 0 0 0 0 0\n"
"RenderEvent 190 229 0 0 0 0 0\n"
"MouseMoveEvent 192 229 0 0 0 0 0\n"
"RenderEvent 192 229 0 0 0 0 0\n"
"MouseMoveEvent 193 230 0 0 0 0 0\n"
"RenderEvent 193 230 0 0 0 0 0\n"
"MouseMoveEvent 195 231 0 0 0 0 0\n"
"RenderEvent 195 231 0 0 0 0 0\n"
"MouseMoveEvent 196 231 0 0 0 0 0\n"
"RenderEvent 196 231 0 0 0 0 0\n"
"MouseMoveEvent 198 231 0 0 0 0 0\n"
"RenderEvent 198 231 0 0 0 0 0\n"
"MouseMoveEvent 198 232 0 0 0 0 0\n"
"RenderEvent 198 232 0 0 0 0 0\n"
"MouseMoveEvent 199 232 0 0 0 0 0\n"
"RenderEvent 199 232 0 0 0 0 0\n"
"MouseMoveEvent 200 232 0 0 0 0 0\n"
"RenderEvent 200 232 0 0 0 0 0\n"
"MouseMoveEvent 201 233 0 0 0 0 0\n"
"RenderEvent 201 233 0 0 0 0 0\n"
"MouseMoveEvent 202 234 0 0 0 0 0\n"
"RenderEvent 202 234 0 0 0 0 0\n"
"MouseMoveEvent 203 235 0 0 0 0 0\n"
"RenderEvent 203 235 0 0 0 0 0\n"
"MouseMoveEvent 203 236 0 0 0 0 0\n"
"RenderEvent 203 236 0 0 0 0 0\n"
"MouseMoveEvent 204 236 0 0 0 0 0\n"
"RenderEvent 204 236 0 0 0 0 0\n"
"MouseMoveEvent 205 236 0 0 0 0 0\n"
"RenderEvent 205 236 0 0 0 0 0\n"
"MouseMoveEvent 206 236 0 0 0 0 0\n"
"RenderEvent 206 236 0 0 0 0 0\n"
"MouseMoveEvent 207 237 0 0 0 0 0\n"
"RenderEvent 207 237 0 0 0 0 0\n"
"MouseMoveEvent 208 237 0 0 0 0 0\n"
"RenderEvent 208 237 0 0 0 0 0\n"
"MouseMoveEvent 210 238 0 0 0 0 0\n"
"RenderEvent 210 238 0 0 0 0 0\n"
"MouseMoveEvent 212 239 0 0 0 0 0\n"
"RenderEvent 212 239 0 0 0 0 0\n"
"MouseMoveEvent 213 239 0 0 0 0 0\n"
"RenderEvent 213 239 0 0 0 0 0\n"
"MouseMoveEvent 213 240 0 0 0 0 0\n"
"RenderEvent 213 240 0 0 0 0 0\n"
"MouseMoveEvent 213 241 0 0 0 0 0\n"
"RenderEvent 213 241 0 0 0 0 0\n"
"LeftButtonPressEvent 213 241 0 0 0 0 0\n"
"RenderEvent 213 241 0 0 0 0 0\n"
"MouseMoveEvent 215 241 0 0 0 0 0\n"
"RenderEvent 215 241 0 0 0 0 0\n"
"MouseMoveEvent 218 239 0 0 0 0 0\n"
"RenderEvent 218 239 0 0 0 0 0\n"
"MouseMoveEvent 224 236 0 0 0 0 0\n"
"RenderEvent 224 236 0 0 0 0 0\n"
"MouseMoveEvent 231 232 0 0 0 0 0\n"
"RenderEvent 231 232 0 0 0 0 0\n"
"MouseMoveEvent 239 227 0 0 0 0 0\n"
"RenderEvent 239 227 0 0 0 0 0\n"
"MouseMoveEvent 248 223 0 0 0 0 0\n"
"RenderEvent 248 223 0 0 0 0 0\n"
"MouseMoveEvent 258 217 0 0 0 0 0\n"
"RenderEvent 258 217 0 0 0 0 0\n"
"MouseMoveEvent 278 206 0 0 0 0 0\n"
"RenderEvent 278 206 0 0 0 0 0\n"
"MouseMoveEvent 288 201 0 0 0 0 0\n"
"RenderEvent 288 201 0 0 0 0 0\n"
"MouseMoveEvent 296 196 0 0 0 0 0\n"
"RenderEvent 296 196 0 0 0 0 0\n"
"MouseMoveEvent 306 193 0 0 0 0 0\n"
"RenderEvent 306 193 0 0 0 0 0\n"
"MouseMoveEvent 314 190 0 0 0 0 0\n"
"RenderEvent 314 190 0 0 0 0 0\n"
"MouseMoveEvent 321 188 0 0 0 0 0\n"
"RenderEvent 321 188 0 0 0 0 0\n"
"MouseMoveEvent 327 185 0 0 0 0 0\n"
"RenderEvent 327 185 0 0 0 0 0\n"
"MouseMoveEvent 333 183 0 0 0 0 0\n"
"RenderEvent 333 183 0 0 0 0 0\n"
"MouseMoveEvent 338 181 0 0 0 0 0\n"
"RenderEvent 338 181 0 0 0 0 0\n"
"MouseMoveEvent 342 181 0 0 0 0 0\n"
"RenderEvent 342 181 0 0 0 0 0\n"
"MouseMoveEvent 345 179 0 0 0 0 0\n"
"RenderEvent 345 179 0 0 0 0 0\n"
"MouseMoveEvent 348 178 0 0 0 0 0\n"
"RenderEvent 348 178 0 0 0 0 0\n"
"MouseMoveEvent 350 178 0 0 0 0 0\n"
"RenderEvent 350 178 0 0 0 0 0\n"
"MouseMoveEvent 353 178 0 0 0 0 0\n"
"RenderEvent 353 178 0 0 0 0 0\n"
"MouseMoveEvent 356 177 0 0 0 0 0\n"
"RenderEvent 356 177 0 0 0 0 0\n"
"MouseMoveEvent 359 176 0 0 0 0 0\n"
"RenderEvent 359 176 0 0 0 0 0\n"
"MouseMoveEvent 363 175 0 0 0 0 0\n"
"RenderEvent 363 175 0 0 0 0 0\n"
"MouseMoveEvent 366 175 0 0 0 0 0\n"
"RenderEvent 366 175 0 0 0 0 0\n"
"MouseMoveEvent 369 174 0 0 0 0 0\n"
"RenderEvent 369 174 0 0 0 0 0\n"
"MouseMoveEvent 372 173 0 0 0 0 0\n"
"RenderEvent 372 173 0 0 0 0 0\n"
"MouseMoveEvent 377 173 0 0 0 0 0\n"
"RenderEvent 377 173 0 0 0 0 0\n"
"MouseMoveEvent 379 172 0 0 0 0 0\n"
"RenderEvent 379 172 0 0 0 0 0\n"
"MouseMoveEvent 382 171 0 0 0 0 0\n"
"RenderEvent 382 171 0 0 0 0 0\n"
"MouseMoveEvent 383 171 0 0 0 0 0\n"
"RenderEvent 383 171 0 0 0 0 0\n"
"MouseMoveEvent 386 171 0 0 0 0 0\n"
"RenderEvent 386 171 0 0 0 0 0\n"
"MouseMoveEvent 388 170 0 0 0 0 0\n"
"RenderEvent 388 170 0 0 0 0 0\n"
"MouseMoveEvent 391 169 0 0 0 0 0\n"
"RenderEvent 391 169 0 0 0 0 0\n"
"MouseMoveEvent 394 169 0 0 0 0 0\n"
"RenderEvent 394 169 0 0 0 0 0\n"
"MouseMoveEvent 396 167 0 0 0 0 0\n"
"RenderEvent 396 167 0 0 0 0 0\n"
"MouseMoveEvent 399 167 0 0 0 0 0\n"
"RenderEvent 399 167 0 0 0 0 0\n"
"MouseMoveEvent 400 166 0 0 0 0 0\n"
"RenderEvent 400 166 0 0 0 0 0\n"
"MouseMoveEvent 402 165 0 0 0 0 0\n"
"RenderEvent 402 165 0 0 0 0 0\n"
"MouseMoveEvent 403 165 0 0 0 0 0\n"
"RenderEvent 403 165 0 0 0 0 0\n"
"MouseMoveEvent 405 165 0 0 0 0 0\n"
"RenderEvent 405 165 0 0 0 0 0\n"
"MouseMoveEvent 408 165 0 0 0 0 0\n"
"RenderEvent 408 165 0 0 0 0 0\n"
"MouseMoveEvent 411 165 0 0 0 0 0\n"
"RenderEvent 411 165 0 0 0 0 0\n"
"MouseMoveEvent 413 165 0 0 0 0 0\n"
"RenderEvent 413 165 0 0 0 0 0\n"
"MouseMoveEvent 420 164 0 0 0 0 0\n"
"RenderEvent 420 164 0 0 0 0 0\n"
"MouseMoveEvent 422 163 0 0 0 0 0\n"
"RenderEvent 422 163 0 0 0 0 0\n"
"MouseMoveEvent 427 163 0 0 0 0 0\n"
"RenderEvent 427 163 0 0 0 0 0\n"
"MouseMoveEvent 431 162 0 0 0 0 0\n"
"RenderEvent 431 162 0 0 0 0 0\n"
"MouseMoveEvent 433 162 0 0 0 0 0\n"
"RenderEvent 433 162 0 0 0 0 0\n"
"MouseMoveEvent 436 162 0 0 0 0 0\n"
"RenderEvent 436 162 0 0 0 0 0\n"
"MouseMoveEvent 439 162 0 0 0 0 0\n"
"RenderEvent 439 162 0 0 0 0 0\n"
"MouseMoveEvent 442 162 0 0 0 0 0\n"
"RenderEvent 442 162 0 0 0 0 0\n"
"MouseMoveEvent 445 162 0 0 0 0 0\n"
"RenderEvent 445 162 0 0 0 0 0\n"
"MouseMoveEvent 447 162 0 0 0 0 0\n"
"RenderEvent 447 162 0 0 0 0 0\n"
"MouseMoveEvent 448 162 0 0 0 0 0\n"
"RenderEvent 448 162 0 0 0 0 0\n"
"MouseMoveEvent 449 162 0 0 0 0 0\n"
"RenderEvent 449 162 0 0 0 0 0\n"
"MouseMoveEvent 451 162 0 0 0 0 0\n"
"RenderEvent 451 162 0 0 0 0 0\n"
"MouseMoveEvent 453 162 0 0 0 0 0\n"
"RenderEvent 453 162 0 0 0 0 0\n"
"MouseMoveEvent 454 162 0 0 0 0 0\n"
"RenderEvent 454 162 0 0 0 0 0\n"
"MouseMoveEvent 456 162 0 0 0 0 0\n"
"RenderEvent 456 162 0 0 0 0 0\n"
"MouseMoveEvent 457 162 0 0 0 0 0\n"
"RenderEvent 457 162 0 0 0 0 0\n"
"MouseMoveEvent 458 162 0 0 0 0 0\n"
"RenderEvent 458 162 0 0 0 0 0\n"
"MouseMoveEvent 460 162 0 0 0 0 0\n"
"RenderEvent 460 162 0 0 0 0 0\n"
"MouseMoveEvent 462 162 0 0 0 0 0\n"
"RenderEvent 462 162 0 0 0 0 0\n"
"MouseMoveEvent 464 162 0 0 0 0 0\n"
"RenderEvent 464 162 0 0 0 0 0\n"
"MouseMoveEvent 467 160 0 0 0 0 0\n"
"RenderEvent 467 160 0 0 0 0 0\n"
"MouseMoveEvent 471 159 0 0 0 0 0\n"
"RenderEvent 471 159 0 0 0 0 0\n"
"MouseMoveEvent 475 159 0 0 0 0 0\n"
"RenderEvent 475 159 0 0 0 0 0\n"
"MouseMoveEvent 476 159 0 0 0 0 0\n"
"RenderEvent 476 159 0 0 0 0 0\n"
"MouseMoveEvent 477 159 0 0 0 0 0\n"
"RenderEvent 477 159 0 0 0 0 0\n"
"MouseMoveEvent 478 159 0 0 0 0 0\n"
"RenderEvent 478 159 0 0 0 0 0\n"
"LeftButtonReleaseEvent 478 159 0 0 0 0 0\n"
"RenderEvent 478 159 0 0 0 0 0\n"
"MouseMoveEvent 478 159 0 0 0 0 0\n"
"RenderEvent 478 159 0 0 0 0 0\n"
"MouseMoveEvent 476 159 0 0 0 0 0\n"
"RenderEvent 476 159 0 0 0 0 0\n"
"MouseMoveEvent 475 158 0 0 0 0 0\n"
"RenderEvent 475 158 0 0 0 0 0\n"
"MouseMoveEvent 474 158 0 0 0 0 0\n"
"RenderEvent 474 158 0 0 0 0 0\n"
"MouseMoveEvent 474 157 0 0 0 0 0\n"
"RenderEvent 474 157 0 0 0 0 0\n"
"MouseMoveEvent 473 157 0 0 0 0 0\n"
"RenderEvent 473 157 0 0 0 0 0\n"
"MouseMoveEvent 472 157 0 0 0 0 0\n"
"RenderEvent 472 157 0 0 0 0 0\n"
"MouseMoveEvent 470 157 0 0 0 0 0\n"
"RenderEvent 470 157 0 0 0 0 0\n"
"MouseMoveEvent 469 157 0 0 0 0 0\n"
"RenderEvent 469 157 0 0 0 0 0\n"
"MouseMoveEvent 468 157 0 0 0 0 0\n"
"RenderEvent 468 157 0 0 0 0 0\n"
"MouseMoveEvent 467 157 0 0 0 0 0\n"
"RenderEvent 467 157 0 0 0 0 0\n"
"MouseMoveEvent 466 157 0 0 0 0 0\n"
"RenderEvent 466 157 0 0 0 0 0\n"
"MouseMoveEvent 464 157 0 0 0 0 0\n"
"RenderEvent 464 157 0 0 0 0 0\n"
"MouseMoveEvent 463 157 0 0 0 0 0\n"
"RenderEvent 463 157 0 0 0 0 0\n"
"MouseMoveEvent 462 157 0 0 0 0 0\n"
"RenderEvent 462 157 0 0 0 0 0\n"
"MouseMoveEvent 461 157 0 0 0 0 0\n"
"RenderEvent 461 157 0 0 0 0 0\n"
"MouseMoveEvent 460 157 0 0 0 0 0\n"
"RenderEvent 460 157 0 0 0 0 0\n"
"MouseMoveEvent 459 157 0 0 0 0 0\n"
"RenderEvent 459 157 0 0 0 0 0\n"
"MouseMoveEvent 458 157 0 0 0 0 0\n"
"RenderEvent 458 157 0 0 0 0 0\n"
"MouseMoveEvent 455 157 0 0 0 0 0\n"
"RenderEvent 455 157 0 0 0 0 0\n"
"MouseMoveEvent 453 157 0 0 0 0 0\n"
"RenderEvent 453 157 0 0 0 0 0\n"
"MouseMoveEvent 451 156 0 0 0 0 0\n"
"RenderEvent 451 156 0 0 0 0 0\n"
"MouseMoveEvent 449 155 0 0 0 0 0\n"
"RenderEvent 449 155 0 0 0 0 0\n"
"MouseMoveEvent 447 155 0 0 0 0 0\n"
"RenderEvent 447 155 0 0 0 0 0\n"
"MouseMoveEvent 444 155 0 0 0 0 0\n"
"RenderEvent 444 155 0 0 0 0 0\n"
"MouseMoveEvent 442 155 0 0 0 0 0\n"
"RenderEvent 442 155 0 0 0 0 0\n"
"MouseMoveEvent 439 155 0 0 0 0 0\n"
"RenderEvent 439 155 0 0 0 0 0\n"
"MouseMoveEvent 434 155 0 0 0 0 0\n"
"RenderEvent 434 155 0 0 0 0 0\n"
"MouseMoveEvent 430 155 0 0 0 0 0\n"
"RenderEvent 430 155 0 0 0 0 0\n"
"MouseMoveEvent 426 155 0 0 0 0 0\n"
"RenderEvent 426 155 0 0 0 0 0\n"
"MouseMoveEvent 422 155 0 0 0 0 0\n"
"RenderEvent 422 155 0 0 0 0 0\n"
"MouseMoveEvent 418 155 0 0 0 0 0\n"
"RenderEvent 418 155 0 0 0 0 0\n"
"MouseMoveEvent 415 155 0 0 0 0 0\n"
"RenderEvent 415 155 0 0 0 0 0\n"
"MouseMoveEvent 412 155 0 0 0 0 0\n"
"RenderEvent 412 155 0 0 0 0 0\n"
"MouseMoveEvent 409 155 0 0 0 0 0\n"
"RenderEvent 409 155 0 0 0 0 0\n"
"MouseMoveEvent 403 155 0 0 0 0 0\n"
"RenderEvent 403 155 0 0 0 0 0\n"
"MouseMoveEvent 399 155 0 0 0 0 0\n"
"RenderEvent 399 155 0 0 0 0 0\n"
"MouseMoveEvent 395 155 0 0 0 0 0\n"
"RenderEvent 395 155 0 0 0 0 0\n"
"MouseMoveEvent 391 155 0 0 0 0 0\n"
"RenderEvent 391 155 0 0 0 0 0\n"
"MouseMoveEvent 382 155 0 0 0 0 0\n"
"RenderEvent 382 155 0 0 0 0 0\n"
"MouseMoveEvent 377 155 0 0 0 0 0\n"
"RenderEvent 377 155 0 0 0 0 0\n"
"MouseMoveEvent 374 155 0 0 0 0 0\n"
"RenderEvent 374 155 0 0 0 0 0\n"
"MouseMoveEvent 371 155 0 0 0 0 0\n"
"RenderEvent 371 155 0 0 0 0 0\n"
"MouseMoveEvent 369 155 0 0 0 0 0\n"
"RenderEvent 369 155 0 0 0 0 0\n"
"KeyPressEvent 369 155 0 0 113 1 q\n"
"CharEvent 369 155 0 0 113 1 q\n"
"ExitEvent 369 155 0 0 113 1 q\n"
;

//---------------------------------------------------------------------------
// Create cells of various types
void CreateHexahedronActor(vtkActor* actor);
void CreatePentagonalPrismActor(vtkActor* actor);
void CreatePyramidActor(vtkActor* actor);
void CreateTetraActor(vtkActor* actor);
void CreateVoxelActor(vtkActor* actor);
void CreateWedgeActor(vtkActor* actor);

//---------------------------------------------------------------------------
int TestCellCentersPointPlacer(int argc, char *argv[])
{
  std::vector<vtkSmartPointer<vtkActor> > actors;

  vtkSmartPointer<vtkActor> hexahedronActor =
    vtkSmartPointer<vtkActor>::New();
  CreateHexahedronActor(hexahedronActor);
  actors.push_back(hexahedronActor);

  vtkSmartPointer<vtkActor> pentagonalPrismActor =
    vtkSmartPointer<vtkActor>::New();
  CreatePentagonalPrismActor(pentagonalPrismActor);
  actors.push_back(pentagonalPrismActor);

  vtkSmartPointer<vtkActor> pyramidActor =
    vtkSmartPointer<vtkActor>::New();
  CreatePyramidActor(pyramidActor);
  actors.push_back(pyramidActor);

  vtkSmartPointer<vtkActor> tetraActor =
    vtkSmartPointer<vtkActor>::New();
  CreateTetraActor(tetraActor);
  actors.push_back(tetraActor);

  vtkSmartPointer<vtkActor> voxelActor =
    vtkSmartPointer<vtkActor>::New();
  CreateVoxelActor(voxelActor);
  actors.push_back(voxelActor);

  vtkSmartPointer<vtkActor> wedgeActor =
    vtkSmartPointer<vtkActor>::New();
  CreateWedgeActor(wedgeActor);
  actors.push_back(wedgeActor);

  vtkSmartPointer<vtkRenderer> renderer =
    vtkSmartPointer< vtkRenderer >::New();

  int gridDimensions = 3;
  int rendererSize = 200;

  // Create a render window, renderer and render window interactor.
  // Add the cells to the renderer, in a grid layout. We accomplish
  // this by using a transform filter to translate and arrange on
  // a grid.

  vtkSmartPointer<vtkRenderWindow> renderWindow =
    vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->SetSize(
    rendererSize*gridDimensions, rendererSize*gridDimensions);
  renderWindow->AddRenderer(renderer);
  renderer->SetBackground(.2, .3, .4);

  // Create a point placer to constrain to the cell centers and add
  // each of the actors to the placer, so that it includes them in
  // its constraints.
  vtkSmartPointer<vtkCellCentersPointPlacer>  pointPlacer =
    vtkSmartPointer<vtkCellCentersPointPlacer>::New();

  for(int row = 0; row < gridDimensions; row++)
    {
    for(int col = 0; col < gridDimensions; col++)
      {
      int index = row * gridDimensions + col;

      if(index > static_cast< int >(actors.size() - 1))
        {
        continue;
        }

      vtkSmartPointer< vtkTransformFilter > transformFilter =
        vtkSmartPointer< vtkTransformFilter >::New();
      vtkSmartPointer< vtkMatrix4x4 > matrix =
        vtkSmartPointer< vtkMatrix4x4 >::New();
      matrix->SetElement(0,3,5*col);
      matrix->SetElement(1,3,5*row);
      vtkSmartPointer< vtkMatrixToLinearTransform > mlt =
        vtkSmartPointer< vtkMatrixToLinearTransform >::New();
      mlt->SetInput(matrix);
      transformFilter->SetInput(actors[index]->GetMapper()->GetInput());
      transformFilter->SetTransform(mlt);
      transformFilter->Update();

      vtkSmartPointer< vtkDataSetMapper > mapper2 =
        vtkSmartPointer< vtkDataSetMapper >::New();
      mapper2->SetInput(transformFilter->GetOutput());
      actors[index]->SetMapper(mapper2);

      renderer->AddActor(actors[index]);
      pointPlacer->AddProp(actors[index]);
      }
    }

  // Default colors
  actors[0]->GetProperty()->SetColor(1,0,0.5);
  actors[1]->GetProperty()->SetColor(0,1,0);
  actors[2]->GetProperty()->SetColor(0,0,1);
  actors[3]->GetProperty()->SetColor(1,1,0);
  actors[4]->GetProperty()->SetColor(1,0,1);
  actors[5]->GetProperty()->SetColor(0,1,1);

  renderer->ResetCamera();
  renderer->GetActiveCamera()->Azimuth(30);
  renderer->GetActiveCamera()->Elevation(-30);
  renderer->ResetCameraClippingRange();

  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindowInteractor->SetRenderWindow(renderWindow);

  renderWindow->Render();

  // Now add a distance widget.

  vtkSmartPointer<vtkDistanceWidget> widget =
    vtkSmartPointer<vtkDistanceWidget>::New();
  widget->CreateDefaultRepresentation();
  vtkSmartPointer< vtkDistanceRepresentation2D > rep =
    vtkSmartPointer< vtkDistanceRepresentation2D >::New();
  rep->GetAxis()->GetProperty()->SetColor( 1.0, 0.0, 0.0 );

  // Create a 3D handle reprensentation template for this distance
  // widget
  vtkSmartPointer< vtkPointHandleRepresentation3D > handleRep3D =
    vtkSmartPointer< vtkPointHandleRepresentation3D >::New();
  handleRep3D->GetProperty()->SetLineWidth(4.0);
  rep->SetHandleRepresentation( handleRep3D );
  handleRep3D->GetProperty()->SetColor( 0.8, 0.2, 0 );
  widget->SetRepresentation(rep);

  // Instantiate the handles and have them be constrained by the
  // placer.
  rep->InstantiateHandleRepresentation();
  rep->GetPoint1Representation()->SetPointPlacer(pointPlacer);
  rep->GetPoint2Representation()->SetPointPlacer(pointPlacer);

  // With a "snap" constraint, we can't have a smooth motion anymore, so
  // turn it off.
  static_cast< vtkPointHandleRepresentation3D * >(
    rep->GetPoint1Representation())->SmoothMotionOff();
  static_cast< vtkPointHandleRepresentation3D * >(
    rep->GetPoint2Representation())->SmoothMotionOff();

  widget->SetInteractor(renderWindowInteractor);
  widget->SetEnabled(1);

  renderWindow->Render();

  return vtkTesting::InteractorEventLoop(
      argc, argv, renderWindowInteractor, TestCellCentersPointPlacerEventLog );
}

//---------------------------------------------------------------------------
void CreateHexahedronActor(vtkActor* actor)
{
  // Setup the coordinates of eight points
  // (the two faces must be in counter clockwise order as viewd from the outside)

  // Create the points
  vtkSmartPointer<vtkPoints> points =
    vtkSmartPointer<vtkPoints>::New();
  points->InsertNextPoint(0.0, 0.0, 0.0);
  points->InsertNextPoint(1.0, 0.0, 0.0);
  points->InsertNextPoint(1.0, 1.0, 0.0);
  points->InsertNextPoint(0.0, 1.0, 0.0);
  points->InsertNextPoint(0.0, 0.0, 1.0);
  points->InsertNextPoint(1.0, 0.0, 1.0);
  points->InsertNextPoint(1.0, 1.0, 1.0);
  points->InsertNextPoint(0.0, 1.0, 1.0);

  // Create a hexahedron from the points
  vtkSmartPointer<vtkHexahedron> hex =
    vtkSmartPointer<vtkHexahedron>::New();
  hex->GetPointIds()->SetId(0,0);
  hex->GetPointIds()->SetId(1,1);
  hex->GetPointIds()->SetId(2,2);
  hex->GetPointIds()->SetId(3,3);
  hex->GetPointIds()->SetId(4,4);
  hex->GetPointIds()->SetId(5,5);
  hex->GetPointIds()->SetId(6,6);
  hex->GetPointIds()->SetId(7,7);

  // Add the hexahedron to a cell array
  vtkSmartPointer<vtkCellArray> hexs =
    vtkSmartPointer<vtkCellArray>::New();
  hexs->InsertNextCell(hex);

  // Add the points and hexahedron to an unstructured grid
  vtkSmartPointer<vtkUnstructuredGrid> uGrid =
    vtkSmartPointer<vtkUnstructuredGrid>::New();
  uGrid->SetPoints(points);
  uGrid->InsertNextCell(hex->GetCellType(), hex->GetPointIds());

  // Visualize
  vtkSmartPointer<vtkDataSetMapper> mapper =
    vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInputConnection(uGrid->GetProducerPort());

  actor->SetMapper(mapper);
}

//---------------------------------------------------------------------------
void CreatePentagonalPrismActor(vtkActor* actor)
{
  // Create the points
  vtkSmartPointer<vtkPoints> points =
    vtkSmartPointer<vtkPoints>::New();
  points->InsertNextPoint(1, 0, 0);
  points->InsertNextPoint(3, 0, 0);
  points->InsertNextPoint(4, 2, 0);
  points->InsertNextPoint(2, 4, 0);
  points->InsertNextPoint(0, 2, 0);
  points->InsertNextPoint(1, 0, 4);
  points->InsertNextPoint(3, 0, 4);
  points->InsertNextPoint(4, 2, 4);
  points->InsertNextPoint(2, 4, 4);
  points->InsertNextPoint(0, 2, 4);

  // Pentagonal Prism
  vtkSmartPointer<vtkPentagonalPrism> pentagonalPrism =
    vtkSmartPointer<vtkPentagonalPrism>::New();
  pentagonalPrism->GetPointIds()->SetId(0,0);
  pentagonalPrism->GetPointIds()->SetId(1,1);
  pentagonalPrism->GetPointIds()->SetId(2,2);
  pentagonalPrism->GetPointIds()->SetId(3,3);
  pentagonalPrism->GetPointIds()->SetId(4,4);
  pentagonalPrism->GetPointIds()->SetId(5,5);
  pentagonalPrism->GetPointIds()->SetId(6,6);
  pentagonalPrism->GetPointIds()->SetId(7,7);
  pentagonalPrism->GetPointIds()->SetId(8,8);
  pentagonalPrism->GetPointIds()->SetId(9,9);

  vtkSmartPointer<vtkCellArray> cellArray =
    vtkSmartPointer<vtkCellArray>::New();
  cellArray->InsertNextCell(pentagonalPrism);

  // Add the points and hexahedron to an unstructured grid
  vtkSmartPointer<vtkUnstructuredGrid> uGrid =
    vtkSmartPointer<vtkUnstructuredGrid>::New();
  uGrid->SetPoints(points);
  uGrid->InsertNextCell(pentagonalPrism->GetCellType(), pentagonalPrism->GetPointIds());

  // Visualize
  vtkSmartPointer<vtkDataSetMapper> mapper =
    vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInputConnection(uGrid->GetProducerPort());

  actor->SetMapper(mapper);

}

//---------------------------------------------------------------------------
void CreatePyramidActor(vtkActor* actor)
{
  vtkSmartPointer<vtkPoints> points =
      vtkSmartPointer<vtkPoints>::New();

  float p0[3] = {1.0, 1.0, 1.0};
  float p1[3] = {-1.0, 1.0, 1.0};
  float p2[3] = {-1.0, -1.0, 1.0};
  float p3[3] = {1.0, -1.0, 1.0};
  float p4[3] = {0.0, 0.0, 0.0};

  points->InsertNextPoint(p0);
  points->InsertNextPoint(p1);
  points->InsertNextPoint(p2);
  points->InsertNextPoint(p3);
  points->InsertNextPoint(p4);

  vtkSmartPointer<vtkPyramid> pyramid =
      vtkSmartPointer<vtkPyramid>::New();
  pyramid->GetPointIds()->SetId(0,0);
  pyramid->GetPointIds()->SetId(1,1);
  pyramid->GetPointIds()->SetId(2,2);
  pyramid->GetPointIds()->SetId(3,3);
  pyramid->GetPointIds()->SetId(4,4);

  vtkSmartPointer<vtkCellArray> cells =
      vtkSmartPointer<vtkCellArray>::New();
  cells->InsertNextCell (pyramid);

  vtkSmartPointer<vtkUnstructuredGrid> ug =
      vtkSmartPointer<vtkUnstructuredGrid>::New();
  ug->SetPoints(points);
  ug->InsertNextCell(pyramid->GetCellType(),pyramid->GetPointIds());

  //Create an actor and mapper
  vtkSmartPointer<vtkDataSetMapper> mapper =
      vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInput(ug);

  actor->SetMapper(mapper);
}

//---------------------------------------------------------------------------
void CreateTetraActor(vtkActor* actor)
{
  vtkSmartPointer< vtkPoints > points =
    vtkSmartPointer< vtkPoints > :: New();
  points->InsertNextPoint(0, 0, 0);
  points->InsertNextPoint(1, 0, 0);
  points->InsertNextPoint(1, 1, 0);
  points->InsertNextPoint(0, 1, 1);
  points->InsertNextPoint(5, 5, 5);
  points->InsertNextPoint(6, 5, 5);
  points->InsertNextPoint(6, 6, 5);
  points->InsertNextPoint(5, 6, 6);

  vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid =
    vtkSmartPointer<vtkUnstructuredGrid>::New();
  unstructuredGrid->SetPoints(points);

  vtkSmartPointer<vtkTetra> tetra =
    vtkSmartPointer<vtkTetra>::New();
  tetra->GetPointIds()->SetId(0, 0);
  tetra->GetPointIds()->SetId(1, 1);
  tetra->GetPointIds()->SetId(2, 2);
  tetra->GetPointIds()->SetId(3, 3);

  vtkSmartPointer<vtkCellArray> cellArray =
    vtkSmartPointer<vtkCellArray>::New();
  cellArray->InsertNextCell(tetra);
  unstructuredGrid->SetCells(VTK_TETRA, cellArray);

  // Create a mapper and actor
  vtkSmartPointer<vtkDataSetMapper> mapper =
    vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInputConnection(unstructuredGrid->GetProducerPort());

  actor->SetMapper(mapper);
}

//---------------------------------------------------------------------------
void CreateVoxelActor(vtkActor* actor)
{
  vtkSmartPointer<vtkPoints> points =
    vtkSmartPointer<vtkPoints>::New();
  points->InsertNextPoint(0, 0, 0);
  points->InsertNextPoint(1, 0, 0);
  points->InsertNextPoint(0, 1, 0);
  points->InsertNextPoint(1, 1, 0);
  points->InsertNextPoint(0, 0, 1);
  points->InsertNextPoint(1, 0, 1);
  points->InsertNextPoint(0, 1, 1);
  points->InsertNextPoint(1, 1, 1);

  vtkSmartPointer<vtkVoxel> voxel =
    vtkSmartPointer<vtkVoxel>::New();
  voxel->GetPointIds()->SetId(0, 0);
  voxel->GetPointIds()->SetId(1, 1);
  voxel->GetPointIds()->SetId(2, 2);
  voxel->GetPointIds()->SetId(3, 3);
  voxel->GetPointIds()->SetId(4, 4);
  voxel->GetPointIds()->SetId(5, 5);
  voxel->GetPointIds()->SetId(6, 6);
  voxel->GetPointIds()->SetId(7, 7);

  vtkSmartPointer<vtkCellArray> cells =
    vtkSmartPointer<vtkCellArray>::New();
  cells->InsertNextCell(voxel);

  vtkSmartPointer<vtkUnstructuredGrid> ug =
    vtkSmartPointer<vtkUnstructuredGrid>::New();
  ug->SetPoints(points);
  ug->InsertNextCell(voxel->GetCellType(),voxel->GetPointIds());

  // Visualize
  vtkSmartPointer<vtkDataSetMapper> mapper =
    vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInput(ug);

  actor->SetMapper(mapper);
}

//---------------------------------------------------------------------------
void CreateWedgeActor(vtkActor* actor)
{
  vtkSmartPointer<vtkPoints> points =
    vtkSmartPointer<vtkPoints>::New();

  points->InsertNextPoint(0, 1, 0);
  points->InsertNextPoint(0, 0, 0);
  points->InsertNextPoint(0, .5, .5);
  points->InsertNextPoint(1, 1, 0);
  points->InsertNextPoint(1, 0.0, 0.0);
  points->InsertNextPoint(1, .5, .5);

  vtkSmartPointer<vtkWedge> wedge =
    vtkSmartPointer<vtkWedge>::New();
  wedge->GetPointIds()->SetId(0,0);
  wedge->GetPointIds()->SetId(1,1);
  wedge->GetPointIds()->SetId(2,2);
  wedge->GetPointIds()->SetId(3,3);
  wedge->GetPointIds()->SetId(4,4);
  wedge->GetPointIds()->SetId(5,5);

  vtkSmartPointer<vtkCellArray> cells =
    vtkSmartPointer<vtkCellArray>::New();
  cells->InsertNextCell(wedge);

  vtkSmartPointer<vtkUnstructuredGrid> ug =
    vtkSmartPointer<vtkUnstructuredGrid>::New();
  ug->SetPoints(points);
  ug->InsertNextCell(wedge->GetCellType(),wedge->GetPointIds());

  // Visualize
  vtkSmartPointer<vtkDataSetMapper> mapper =
    vtkSmartPointer<vtkDataSetMapper>::New();
  mapper->SetInput(ug);

  actor->SetMapper(mapper);
}
