vtkBridgePointIteratorOne.cxx 4.11 KB
Newer Older
Francois Bertel's avatar
Francois Bertel committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkBridgePointIteratorOne.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.

=========================================================================*/
// .NAME vtkBridgePointIteratorOne - Implementation of vtkGenericPointIterator.
// .SECTION Description
// It is just an example that show how to implement the Generic. It is also
// used for testing and evaluating the Generic.
// .SECTION See Also
// vtkGenericPointIterator, vtkBridgeDataSet

#include "vtkBridgePointIteratorOne.h"

24
#include <cassert>
Francois Bertel's avatar
Francois Bertel committed
25 26 27 28 29 30 31 32 33 34 35 36

#include "vtkObjectFactory.h"
#include "vtkBridgeDataSet.h"
#include "vtkDataSet.h"

vtkStandardNewMacro(vtkBridgePointIteratorOne);

//-----------------------------------------------------------------------------
// Description:
// Default constructor.
vtkBridgePointIteratorOne::vtkBridgePointIteratorOne()
{
37
  this->DataSet=nullptr;
Francois Bertel's avatar
Francois Bertel committed
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
  this->cIsAtEnd=1;
}

//-----------------------------------------------------------------------------
// Description:
// Destructor.
vtkBridgePointIteratorOne::~vtkBridgePointIteratorOne()
{
   vtkSetObjectBodyMacro(DataSet,vtkBridgeDataSet,0);
}

//-----------------------------------------------------------------------------
void vtkBridgePointIteratorOne::PrintSelf(ostream& os, vtkIndent indent)
{
  this->Superclass::PrintSelf(os,indent);
}

//-----------------------------------------------------------------------------
// Description:
// Move iterator to first position if any (loop initialization).
void vtkBridgePointIteratorOne::Begin()
{
  this->cIsAtEnd=0;
}

//-----------------------------------------------------------------------------
// Description:
// Is there no point at iterator position? (exit condition).
66
vtkTypeBool vtkBridgePointIteratorOne::IsAtEnd()
Francois Bertel's avatar
Francois Bertel committed
67 68 69 70 71 72 73 74 75 76 77 78 79
{
  return this->cIsAtEnd;
}

//-----------------------------------------------------------------------------
// Description:
// Move iterator to next position. (loop progression).
// \pre not_off: !IsAtEnd()
void vtkBridgePointIteratorOne::Next()
{
  assert("pre: not_off" && !IsAtEnd());
  this->cIsAtEnd=1;
}
80

Francois Bertel's avatar
Francois Bertel committed
81 82 83 84 85 86 87 88
//-----------------------------------------------------------------------------
// Description:
// Point at iterator position.
// \pre not_off: !IsAtEnd()
// \post result_exists: result!=0
double *vtkBridgePointIteratorOne::GetPosition()
{
  assert("pre: not_off" && !IsAtEnd());
89

Francois Bertel's avatar
Francois Bertel committed
90
  double *result=this->DataSet->Implementation->GetPoint(this->Id);
91

92
  assert("post: result_exists" && result!=nullptr);
Francois Bertel's avatar
Francois Bertel committed
93 94 95 96 97 98 99 100 101 102 103
  return result;
}

//-----------------------------------------------------------------------------
// Description:
// Point at iterator position.
// \pre not_off: !IsAtEnd()
// \pre x_exists: x!=0
void vtkBridgePointIteratorOne::GetPosition(double x[3])
{
  assert("pre: not_off" && !IsAtEnd());
104
  assert("pre: x_exists" && x!=nullptr);
Francois Bertel's avatar
Francois Bertel committed
105 106
  this->DataSet->Implementation->GetPoint(this->Id,x);
}
107

Francois Bertel's avatar
Francois Bertel committed
108 109 110 111 112 113 114
//-----------------------------------------------------------------------------
// Description:
// Unique identifier for the point, could be non-contiguous
// \pre not_off: !IsAtEnd()
vtkIdType vtkBridgePointIteratorOne::GetId()
{
  assert("pre: not_off" && !IsAtEnd());
115

Francois Bertel's avatar
Francois Bertel committed
116 117 118 119 120 121 122 123 124 125 126 127
  return this->Id;
}

//-----------------------------------------------------------------------------
// Description:
// Used internally by vtkBridgeDataSet.
// Iterate over one point of identifier `id' on dataset `ds'.
// \pre ds_can_be_null: ds!=0 || ds==0
// \pre valid_id: vtkImplies(ds!=0,(id>=0)&&(id<=ds->GetNumberOfCells()))
void vtkBridgePointIteratorOne::InitWithOnePoint(vtkBridgeDataSet *ds,
                                                 vtkIdType id)
{
128
  assert("pre: valid_id" &&
129
         ((ds==nullptr) || ((id>=0)&&(id<=ds->GetNumberOfCells())))); // A=>B: !A||B
130

Francois Bertel's avatar
Francois Bertel committed
131 132 133
  vtkSetObjectBodyMacro(DataSet,vtkBridgeDataSet,ds);
  this->Id=id;
}