/usr/include/IGSTK/igstkSpatialObject.h is in libigstk4-dev 4.4.0-2build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | /*=========================================================================
Program: Image Guided Surgery Software Toolkit
Module: $RCSfile: igstkSpatialObject.h,v $
Language: C++
Date: $Date: 2009-01-30 18:24:31 $
Version: $Revision: 1.23 $
Copyright (c) ISC Insight Software Consortium. All rights reserved.
See IGSTKCopyright.txt or http://www.igstk.org/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 notices for more information.
=========================================================================*/
#ifndef __igstkSpatialObject_h
#define __igstkSpatialObject_h
#include "igstkLogger.h"
#include "itkSpatialObject.h"
#include "igstkMacros.h"
#include "igstkObject.h"
#include "igstkStateMachine.h"
#include "igstkEvents.h"
#include "igstkCoordinateSystemInterfaceMacros.h"
namespace igstk
{
/** \class SpatialObject
*
* \brief Geometrical abstraction of physical objects present in the surgical
* scene.
*
* This class is intended to describe objects in the surgical scenario.
* Subclasses of this class will be used for representing, for example,
* surgical instruments such as needles, catheters and guide wires; as well as
* pre-operative and intra-operative images.
*
* This class encapsulates an ITK spatial object with the goal of restricting
* access to functionalities that are not essential for IGS applications, or to
* functionalities thay may present risks and unnecessary flexibility. This is
* an abstract class, you should use the derived classes that represent
* specific shapes.
*
*
* \image html igstkSpatialObject.png "SpatialObject State Machine Diagram"
* \image latex igstkSpatialObject.eps "SpatialObject State Machine Diagram"
*
* \ingroup Object
*/
class SpatialObject : public Object
{
public:
/** Macro with standard traits declarations. */
igstkStandardClassTraitsMacro( SpatialObject, Object )
public: // this "public: is necessary because the
// Macro above introduces a private section.
/** Typedefs */
typedef itk::SpatialObject<3> SpatialObjectType;
typedef SpatialObjectType::BoundingBoxType BoundingBoxType;
igstkLoadedObjectEventMacro( BoundingBoxEvent, IGSTKEvent,
BoundingBoxType );
void RequestGetBounds();
void RequestGetBounds() const;
protected:
/** The constructor of this class is declared protected to enforce the use of
* SmartPointers syntax when instantiating objects of this class. This
* constructor will be called indirectly by the ::New() method. It will
* initialize the internal state machine of this class. */
SpatialObject( void );
/** The destructor should be overriden in derived classes that allocate
* memory for member variables. */
~SpatialObject( void );
/** Replacement for RequestSetSpatialObject(). Internal is added to the name
* to clarify that this is used with the ITK spatial object as argument */
void RequestSetInternalSpatialObject( SpatialObjectType * object );
/** Print the object information in a stream. */
virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const;
/** Returns the ITK spatial object that is contained inside this IGSTK
* spatial object */
SpatialObjectType * GetInternalSpatialObject() const;
private:
/** Internal itkSpatialObject */
SpatialObjectType::Pointer m_SpatialObject;
SpatialObjectType::Pointer m_SpatialObjectToBeSet;
void ReportBoundsProcessing();
void ReportBoundsNotAvailableProcessing();
/** Inputs to the State Machine */
igstkDeclareInputMacro( InternalSpatialObjectNull );
igstkDeclareInputMacro( InternalSpatialObjectValid );
igstkDeclareInputMacro( RequestBounds );
/** States for the State Machine */
igstkDeclareStateMacro( Initial );
igstkDeclareStateMacro( Ready );
/** Action methods to be invoked only by the state machine */
void SetInternalSpatialObjectProcessing();
/** Invoked by the state machine after a call to
* RequestSetInternalSpatialObject with a null object. */
void ReportSpatialObjectNullProcessing();
/** Define the coordinate system interface
*/
igstkCoordinateSystemClassInterfaceMacro();
};
/** Event to be invoked when the state of the SpatialObject changes.
* For example, if the radius of a cylinder changes. */
igstkLoadedObjectEventMacro(
SpatialObjectModifiedEvent, IGSTKEvent, SpatialObject );
/** Event to be send to observers that request a SpatialObject, when the
* spatial object is not yet ready at the provider. For example, when a
* GroupObject is queried for a child or when a VascularNetwork is queried for
* a Vessel using an Id. */
igstkEventMacro( SpatialObjectNotAvailableEvent, IGSTKErrorEvent );
} // end namespace igstk
#endif // __igstkSpatialObject_h
|