MeVisLab Toolbox Reference
CSO.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2007, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13
15
16#pragma once
17
18
19#include "MLCSOIncludes.h"
20
21#include "CSOAttributes.h"
22#include "CSOBase/CSOGroup.h"
26
27
28ML_START_NAMESPACE
29
30
31// Forward declaration.
32class CSOList;
33class CSOManager;
34
35
37
44{
45
46public:
47
49 CSO();
51 CSO(CSOList* csoList);
55 CSO(const CSO &cso, CSOList* csoList=nullptr, unsigned int csoId = INVALID_CSO_ID);
57 virtual ~CSO();
58
59
60 /* METHODS */
61
63
64
67
71
73 inline void storeInUndoManager() { setInsertRemoveSeedPointCommand(); }
75
77
85 void moveSeedPointsAndPathPoints(const Vector3& offset, int timepoint);
87 void moveSeedPointsAndPathPoints(double dx, double dy, double dz, int timepoint);
91 void moveSeedPointsAndPathPoints(double dx, double dy, double dz);
92
94 void setAbsoluteMovementCommand(double fromX, double fromY, double fromZ, double toX, double toY, double toZ, int fromTimePointIndex, int toTimePointIndex);
96 void moveSingleSeedPoint(CSOSeedPoint* sPoint, double dx, double dy, double dz);
102
111
119 void setSeedAndPathPoints(unsigned int numSeedPoints, bool isClosed=true);
121 void setInitialSeedAndPathPointsNoEvent(unsigned int numSeedPoints, bool isClosed = true);
135 CSOSeedPoint* insertSeedPointAt(CSOPathPoints* toBeSplitPath, const Vector3& toInsertPos);
139
145 CSOSeedPoint* getSeedPointAt(unsigned int index) const;
147 inline CSOSeedPoint* getFirstSeedPoint() const { if (numSeedPoints()) { return _seedPointList[0]; } else { return nullptr; } }
149 inline CSOSeedPoint* getLastSeedPoint() const { if (numSeedPoints()) { return _seedPointList[numSeedPoints()-1];} else { return nullptr; } }
151 inline unsigned int numSeedPoints() const { return static_cast<unsigned int>(_seedPointList.size()); }
153 bool getSeedPointIndex(CSOSeedPoint* sPoint, unsigned int& index) const;
155 inline unsigned int numPathPointLists() const { return static_cast<unsigned int>(_pathPointsList.size()); }
157 void fillPathPointCoordinatesFlattened(std::vector<Vector3>& pathPointCoords) const;
159 void fillPathPointCoordinatesFlattened(std::vector<Vector4>& pathPointCoordsAndValues) const;
162 inline CSOPathPoints* getPathPointsAt(unsigned int index) const { return _pathPointsList[index]; }
164 unsigned int getTotalNumPathPoints() const;
166 unsigned int getTotalNumUniquePathPoints() const;
167
169 void swapPoints(CSO& other);
170
172
174 bool isSelected() const;
175
185 void setSeedPointSelectedAt(unsigned int index);
191 unsigned int getNumSelectedSeedPoints() const;
193 CSOSeedPoint* getSelectedSeedPointAt(unsigned int index) const;
195
202 bool addToGroup(CSOGroup& group, bool useUndoRedo=true);
204 void removeFromGroup(CSOGroup &group, bool useUndoRedo=true);
206 bool isInGroup(const CSOGroup* group) const;
207 // Returns whether this CSO is in a same CSOGroup as the specified CSO.
208 bool isInSameGroupsAs(CSO* cso) const;
210 bool isInGroup(unsigned int groupId) const;
212 inline unsigned int numGroups() const { return static_cast<unsigned int>(_csoGroupIds.size()); }
214 CSOGroup* getGroupAt(unsigned int index) const;
217 inline unsigned int getGroupIdAt(unsigned int index) const { return _csoGroupIds[index]; }
221
226 void _addReferenceToGroup(const CSOGroup& group);
230
236 inline void setType(const std::string& type) { _type = type; }
238 inline const std::string& getType() const { return _type; }
240 inline void setSubType(const std::string& subtype) { _subtype = subtype; }
242 inline const std::string& getSubType() const { return _subtype; }
244 inline void setCreatorId(int id) { _creatorId = id; }
246 inline int getCreatorId() const { return _creatorId; }
248
254 inline void setUserData(const std::string& name, Variant value) { _attributes.setUserData(name, value); }
256 inline Variant getUserData(const std::string& name) const { return _attributes.getUserData(name); }
258 inline void getUserDataNames(std::vector< std::string >& names) const { _attributes.getUserDataNames(names); }
260 inline void removeUserData(const std::string& name) { _attributes.removeUserData(name); }
262
270 CSOBoundingBox getVoxelBoundingBox(const Matrix4& worldToVoxelMatrix, size_t hashKey) const;
272 CSOBoundingBox getVoxelBoundingBoxSeedPoints(const Matrix4& worldToVoxelMatrix, size_t hashKey) const;
275 inline bool isInPlane() const { Vector3 dummy; return isInPlane(dummy); }
278 bool isInPlane(Vector3& planeNormal) const;
280 inline const Vector3& getPlaneNormal() const { _computeIsInPlane(); return _planeNormal; }
282 inline void computePlaneNormal() { _computeIsInPlane(); }
285 inline void setIsInPlane(bool status) { _isInPlane = status; }
287 inline void setPlaneNormal(const Vector3& planeNormal) { _planeNormal = planeNormal; _hasValidPlaneStatus = true; }
289 inline void invalidatePlaneNormal() { _hasValidPlaneStatus = false; }
291 double getLength() const;
293 inline double getArea() const { _computeArea(); return _area; }
295 inline void invalidateArea() { _hasValidArea = false; }
297 bool isSelfIntersecting() const;
303 void setIsClosed(bool isClosed);
305 inline bool isClosed() const { return _isClosed; }
307 bool isPoint() const;
309 bool isEmpty() const;
311 inline void setIsFinished(bool isFinished) { _isFinished = isFinished; }
313 inline bool getIsFinished() const { return _isFinished; }
315 inline void setNeedsInterpolation(bool needsInterpolation) { _needsInterpolation = needsInterpolation; }
317 inline bool getNeedsInterpolation() const { return _needsInterpolation; }
321 void setNeedInterpolationAllSeedPoints(bool needsInterpolation);
323 inline void setNeedInterpolation(CSOSeedPoint* seedPoint) { if (seedPoint != nullptr) { seedPoint->setNeedsInterpolation(true); _needsInterpolation = true; } }
327
335 void setCSOList(CSOList* csoList);
337 inline CSOList* getCSOList() const { return _csoList; }
339 inline unsigned int getId() const { return _uniqueId; }
341
347 void setLabel(const std::string& label);
349 inline const std::string& getLabel() const { return _attributes.label; }
351 void setDescription(std::string description);
353 inline const std::string& getDescription() const { return _attributes.description; }
354
358 int getTimePointIndex() const;
360 void setShowState(bool state);
362 bool getShowState() const;
364 void setVoxelizeState(bool state);
366 bool getVoxelizeState() const;
368 void setEditableState(bool state);
370 bool getEditableState() const;
374 inline void setPathPointStyle(int style) { setPathPointStyle(static_cast<CSOPathPointsStyle>(style)); }
378 void setPathPointWidth(float width);
380 float getPathPointWidth() const;
382 void setPathPointColor(const Vector3& color);
386 void setPathPointAlpha(float alpha);
388 float getPathPointAlpha() const;
390 void setSeedPointStyle(int style);
392 int getSeedPointStyle() const;
394 void setSeedPointSize(float size);
396 float getSeedPointSize() const;
398 void setSeedPointColor(const Vector3& color);
402 void setSeedPointAlpha(float alpha);
404 float getSeedPointAlpha() const;
405
407 void setVoxelWriteMode(int mode);
409 int getVoxelWriteMode() const;
411 void setVoxelWriteValue(float value);
413 float getVoxelWriteValue() const;
414
416 void setAllValuesTo(float value);
418
424 inline int getPrivateTimePointIndex() const { return _attributes.timePointIndex; }
426 inline bool getPrivateShowState() const { return _attributes.showState; }
428 inline bool getPrivateVoxelizeState() const { return _attributes.voxelizeState; }
430 inline bool getPrivateEditableState() const { return _attributes.editableState; }
432 inline int getPrivatePathPointStyle() const { return _attributes.pathPointStyle; }
434 inline float getPrivatePathPointWidth() const { return _attributes.pathPointWidth; }
436 inline Vector3 getPrivatePathPointColor() const { return _attributes.pathPointColor; }
438 inline float getPrivatePathPointAlpha() const { return _attributes.pathPointAlpha; }
440 inline int getPrivateSeedPointStyle() const { return _attributes.seedPointStyle; }
442 inline float getPrivateSeedPointSize() const { return _attributes.seedPointSize; }
444 inline Vector3 getPrivateSeedPointColor() const { return _attributes.seedPointColor; }
446 inline float getPrivateSeedPointAlpha() const { return _attributes.seedPointAlpha; }
447
449 inline int getPrivateVoxelWriteMode() const { return _attributes.voxelWriteMode; }
451 inline float getPrivateVoxelWriteValue() const { return _attributes.voxelWriteValue; }
452
453
455 inline void setPrivateIsFinished(bool isFinished) { _isFinished = isFinished; }
457 inline void setPrivateIsClosed(bool isClosedP) { _isClosed = isClosedP; }
459 inline void setPrivateIsInPlane(bool isInPlaneP) { _isInPlane = isInPlaneP; }
461 inline void setPrivateBoundingBox(const CSOBoundingBox& bb) { _worldBoundingBox = bb; _hasValidWorldBoundingBox = true; }
463 inline void setPrivatePlaneNormal(const Vector3& normal) { _planeNormal = normal; _hasValidPlaneStatus = true; }
466 void setId(unsigned int newId);
468
470 void setAttributesFrom(const CSO* const cso);
471
473 bool saveAttributes(std::ostream& outStream, bool useAscii=false);
474
476 void loadAttributes(std::istream& inStream, short version, bool swapBytes, bool useAscii=false);
477
479 const CSOAttributes& getAttributes() const { return _attributes; }
480
482 CSOAttributes& getWritableAttributes() { return _attributes; }
483
484private:
485
489 template <class Method>
490 int getOverrideGroupIndexForAttribute(Method method) const; // (defined in source file)
491
493 template<class T>
494 void _fillPathPointCoordinatesFlattened(std::vector<T>& pathPointCoords) const;
495
496 /* MEMBER VARIABLES */
497
499 unsigned int _uniqueId;
500
502 std::vector<CSOSeedPoint*> _seedPointList;
504 std::vector<CSOPathPoints*> _pathPointsList;
505
506 friend class CSOList;
507
509 CSOList* _csoList{};
510
512 std::vector<unsigned int> _csoGroupIds;
513
515 std::vector<unsigned int> _selectedSeedPointsIndices;
516
518 std::string _type{"TYPE_NOT_SET"};
520 std::string _subtype{"SUB_TYPE_NOT_SET"};
522 int _creatorId{};
523
525 CSOAttributes _attributes;
526
528 mutable bool _hasValidWorldBoundingBox{};
530 mutable CSOBoundingBox _worldBoundingBox;
531
533 mutable boost::unordered_map < MatrixHashPair, CSOBoundingBox, MatrixHashFunction > _voxelBoundingBoxCache;
535 mutable boost::unordered_map < MatrixHashPair, CSOBoundingBox, MatrixHashFunction > _voxelSeedPointBoundingBoxCache;
536
538 mutable bool _hasValidPlaneStatus{};
540 mutable bool _hasValidArea{};
541
543 mutable bool _hasValidSelfIntersectingStatus{};
544
545
547 bool _isFinished{};
549 bool _isClosed{};
551 mutable bool _isInPlane{};
553 mutable Vector3 _planeNormal;
554
556 bool _needsInterpolation{};
557
559 mutable double _area{};
560
562 mutable bool _isSelfIntersecting{};
563
564
565 /* METHODS */
566
568 void _computeIsInPlane() const;
570 void _computeArea() const;
572 void _resetSeedPathLinks();
573};
574
576
577ML_END_NAMESPACE
const unsigned int INVALID_CSO_ID
Defines a CSO/CSOGroup ID that is invalid.
#define MLCSO_EXPORT
Defines export symbols for classes, so they can be used in other DLLs.
Definition MLCSOSystem.h:23
This class comprises some attributes that are common for a CSO and a CSOGroup.
The CSOBoundingBox defines an axis-parallel bounding box with double precision.
A CSOGroup comprises a number of CSOs, which themselves can be in a number of different CSOGroups.
Definition CSOGroup.h:38
A CSOList comprises a number of CSOs and CSOGroups and is the central object for contour segmentation...
Definition CSOList.h:61
The CSOManager allows for storing and iterating CSOs, and implements an undo/redo mechanism.
Definition CSOManager.h:33
The CSOPathPoints is a list of world coordinates that are interpolated by a certain interpolation sch...
The CSOSeedPoint can be interactively set and modified, and is the framework for contours.
void setNeedsInterpolation(bool needsInterpolation)
Sets that this seed point needs interpolation (its incident path points).
The CSO represents a contour segmentation object.
Definition CSO.h:44
void removeUserData(const std::string &name)
Removes a user data entry.
Definition CSO.h:260
CSOList * getCSOList() const
Returns the internal pointer to the embracing CSOList.
Definition CSO.h:337
bool getPrivateEditableState() const
Returns the private attribute 'editableState'.
Definition CSO.h:430
void invalidateArea()
Invalidates the internal area flag, so it can be recomputed.
Definition CSO.h:295
unsigned int numSeedPoints() const
Returns the number of seed points.
Definition CSO.h:151
CSOBoundingBox getVoxelBoundingBoxSeedPoints(const Matrix4 &worldToVoxelMatrix, size_t hashKey) const
Returns the bounding box of the seed points of this CSO in voxel coordinates computed by the specifie...
CSOPathPoints * appendPathPoints()
Appends just a path point list the internal list and returns a pointer to it.
void swapPoints(CSO &other)
Swaps the seed and path points of two CSOs. No events are emitted.
float getPathPointAlpha() const
Returns the alpha value of the path points.
bool isClosed() const
Returns whether the CSO is closed.
Definition CSO.h:305
void setDescription(std::string description)
Sets the description of this CSO.
const std::string & getDescription() const
Returns the description of this CSO.
Definition CSO.h:353
bool getEditableState() const
Returns the 'editable' state of this CSO.
CSOAttributes & getWritableAttributes()
Returns write access to all CSO attributes (NOTE: be careful as no events are emitted when changing t...
Definition CSO.h:482
void setSeedPointSize(float size)
Sets the size of the seed points.
float getPrivatePathPointWidth() const
Returns the private attribute 'path point width'.
Definition CSO.h:434
unsigned int numPathPointLists() const
Returns the number of path point lists.
Definition CSO.h:155
unsigned int numGroups() const
Returns the number of CSOGroups this CSO is in.
Definition CSO.h:212
CSOPathPointsStyle getPathPointStyle() const
Returns the style of the path points.
Vector3 getSeedPointColor() const
Returns the color of the seed points.
float getPrivateSeedPointAlpha() const
Returns the private attribute 'seed point alpha'.
Definition CSO.h:446
CSOSeedPoint * insertSeedPointAt(CSOPathPoints *toBeSplitPath, const Vector3 &toInsertPos)
Inserts a seed point into the specified toBeSplitPath at the specified position.
bool getIsFinished() const
Returns the finished status of this contour.
Definition CSO.h:313
const Vector3 & getPlaneNormal() const
Returns the plane normal. Only valid, if isInPlane returns 'true'.
Definition CSO.h:280
CSOSeedPoint * appendSeedAndPathPointNoEvent(const Vector3 &position)
Appends a seed point and a path point list to the end of the seed point list and returns a pointer to...
void applyTransformationMatrix(const Matrix4 &matrix)
const std::string & getLabel() const
Returns the label of this CSO.
Definition CSO.h:349
void setPrivateIsFinished(bool isFinished)
Sets the 'isFinished' flag without any side effects.
Definition CSO.h:455
CSOBoundingBox getVoxelBoundingBox(const Matrix4 &worldToVoxelMatrix, size_t hashKey) const
Returns the bounding box of this contour in voxel coordinates computed by the specified (image) matri...
void setNeedInterpolationAllSeedPoints(bool needsInterpolation)
Sets the need for interpolation to all member seed points.
void setSeedPointsAndPathPoints(const CSO *cso)
Sets the seed points and the path point of the specified CSO.
float getPathPointWidth() const
Returns the width of the path points.
float getVoxelWriteValue() const
Returns the voxel write value of this CSO.
CSOPathPoints * insertPathPointsEndStartNoEvent()
Inserts a CSOPathPoint list between the ending and the starting seed points and returns a pointer to ...
void setId(unsigned int newId)
Sets the unique ID of this CSO.
unsigned int getNumSelectedSeedPoints() const
Returns the number of selected seed points.
void setPrivatePlaneNormal(const Vector3 &normal)
Sets the plane normal of this CSO.
Definition CSO.h:463
CSOPathPoints * insertPathPointsEndStart()
Inserts a CSOPathPoint list between the ending and the starting seed points and returns a pointer to ...
float getSeedPointAlpha() const
Returns the alpha value of the seed points.
const std::string & getSubType() const
Returns the type of the CSO. This is set by the editor or processor that generated this CSO.
Definition CSO.h:242
void setVoxelWriteMode(int mode)
Sets the voxel write mode of this CSO.
bool isPoint() const
Returns whether the CSO is just a point.
void removeSeedPoint(CSOSeedPoint *sPoint)
Removes the specified seed point from this CSO.
void setLabel(const std::string &label)
void _removeReferenceToGroup(const CSOGroup &group)
Removes the specified CSOGroup from the internal list.
float getPrivatePathPointAlpha() const
Returns the private attribute 'path point alpha'.
Definition CSO.h:438
void clearSelectedSeedPoints()
Clears the list of selected seed points.
void setPrivateIsClosed(bool isClosedP)
Sets the 'isClosed' flag without any side effects.
Definition CSO.h:457
void resortSeedPointsClockwise()
void getUserDataNames(std::vector< std::string > &names) const
Fills the specified vector with the keys/name under which user data is stored for this CSO.
Definition CSO.h:258
void setSeedPointColor(const Vector3 &color)
Sets the color of the seed points.
void setCreatorId(int id)
Sets the creator ID of the CSO. This is set by the editor or processor that generated this CSO.
Definition CSO.h:244
void moveSeedPointsAndPathPoints(const Vector3 &offset, int timepoint)
Moves all seed points and path points by the specified coordinate offset and sets the CSO to the spec...
bool getVoxelizeState() const
Returns the 'voxelize' state of this CSO.
Vector3 getPathPointColor() const
Returns the color of the path points.
bool isInSameGroupsAs(CSO *cso) const
void setUserData(const std::string &name, Variant value)
Definition CSO.h:254
int getTimePointIndex() const
Returns the time point index of this CSO.
void moveSeedPointsAndPathPoints(double dx, double dy, double dz, int timepoint)
Moves all seed points and path points by the specified coordinate offset and sets the CSO to the spec...
float getPrivateSeedPointSize() const
Returns the private attribute 'seed point size'.
Definition CSO.h:442
bool getSeedPointIndex(CSOSeedPoint *sPoint, unsigned int &index) const
Sets the sIndex to the index of the specified seed point and returns whether such a seed point exists...
int getCreatorId() const
Returns the creator ID of the CSO. This is set by the editor or processor that generated this CSO.
Definition CSO.h:246
bool isInPlane(Vector3 &planeNormal) const
Returns the plane status and fills the argument vector with the plane normal (only valid if all seed ...
unsigned int getTotalNumUniquePathPoints() const
Returns the total number of unique path points in this CSO; this number equals the number of path poi...
void setPrivateBoundingBox(const CSOBoundingBox &bb)
Sets the bounding box of this CSO.
Definition CSO.h:461
void setNeedInterpolation(CSOSeedPoint *seedPoint)
Sets the need of being interpolated to the specified seed point and to the CSO's state.
Definition CSO.h:323
int getPrivateSeedPointStyle() const
Returns the private attribute 'seed point style'.
Definition CSO.h:440
CSOSeedPoint * getLastSeedPoint() const
Returns a pointer to the last seed point of this CSO.
Definition CSO.h:149
CSOSeedPoint * appendSeedPoint()
Appends just a seed point to the internal list and returns a pointer to it.
bool isSelfIntersecting() const
Returns whether this CSO is self-intersecting.
CSO(const CSO &cso, CSOList *csoList=nullptr, unsigned int csoId=INVALID_CSO_ID)
Copy constructor; the unique ID is taken from the specified CSOList.
void setSeedAndPathPoints(unsigned int numSeedPoints, bool isClosed=true)
Generates the specified number of seed points and path point lists between those.
void setPathPointAlpha(float alpha)
Sets the alpha value of the path points.
void setPathPointStyle(CSOPathPointsStyle style)
Sets the style of the path points.
CSOGroup * getGroupAt(unsigned int index) const
Returns the CSOGroup at the specified index. If the index is out of bounds, nullptr is returned.
void setCSOList(CSOList *csoList)
unsigned int getId() const
Returns the unique ID of this CSO.
Definition CSO.h:339
void reverseSeedPointOrder()
Reverses the order of all seed points and clears all path points in between.
CSO()
Standard constructor. The unique ID is initialized with 0.
void storeInUndoManager()
Stores the geometric information of the CSO in the UndoRedo manager.
Definition CSO.h:73
void moveSingleSeedPoint(CSOSeedPoint *sPoint, double dx, double dy, double dz)
Moves a certain seed point by the specified coordinate offset.
int getPrivateTimePointIndex() const
Definition CSO.h:424
void removeFromGroup(CSOGroup &group, bool useUndoRedo=true)
Removes this CSO from the specified CSOGroup.
void setVoxelizeState(bool state)
Sets the 'voxelize' state of this CSO.
void moveSeedPointsAndPathPoints(const Vector3 &offset)
Moves all seed points and path points by the specified coordinate offset.
void setSeedPointStyle(int style)
Sets the style of the seed points.
bool getPrivateVoxelizeState() const
Returns the private attribute 'voxelizeState'.
Definition CSO.h:428
void removeAllSeedAndPathPoints()
Removes all seed points and path point lists from this CSO.
void fillPathPointCoordinatesFlattened(std::vector< Vector4 > &pathPointCoordsAndValues) const
Fills up the specified std::vector<Vector4> with all the path point coordinates and values in order.
CSOSeedPoint * getSelectedSeedPointAt(unsigned int index) const
Returns a pointer to a selected seed point at the specified index.
double getArea() const
Returns the area of this CSO (this value is only meaningful if all points lie in a plane).
Definition CSO.h:293
void setAbsoluteMovementCommand(double fromX, double fromY, double fromZ, double toX, double toY, double toZ, int fromTimePointIndex, int toTimePointIndex)
Sets the absolute movement for undo/redo.
bool isSelected() const
Returns whether this CSO is selected in its CSOList. If there is no enclosing CSOList,...
void invalidatePlaneNormal()
Invalidates the plane normal.
Definition CSO.h:289
Vector3 getPrivatePathPointColor() const
Returns the private attribute 'path point color'.
Definition CSO.h:436
Vector3 getPrivateSeedPointColor() const
Returns the private attribute 'seed point color'.
Definition CSO.h:444
void setPrivateIsInPlane(bool isInPlaneP)
Sets the 'isInPlane' flag without any side effects.
Definition CSO.h:459
void setInsertRemoveSeedPointCommand()
Triggers the according undo/redo command to be put on the stack.
bool isSelectedSeedPoint(CSOSeedPoint *sPoint) const
Returns whether the specified seed point is selected.
void _addReferenceToGroup(const CSOGroup &group)
void setIsFinished(bool isFinished)
Sets the finished status of this contour. Note that the finished status is set to 'true' if the conto...
Definition CSO.h:311
void setNeedsInterpolation(bool needsInterpolation)
Sets whether this CSO needs interpolation.
Definition CSO.h:315
void setPathPointWidth(float width)
Sets the width of the path points.
CSOSeedPoint * appendSeedAndPathPoint()
Appends a seed point and a path point list to the end of the seed point list and returns a pointer to...
void setPlaneNormal(const Vector3 &planeNormal)
Sets the plane normal that becomes valid by this.
Definition CSO.h:287
void setSubType(const std::string &subtype)
Sets the subtype of the CSO. This is set by the editor or processor that generated this CSO.
Definition CSO.h:240
bool getShowState() const
Returns the 'show' status of this CSO.
void setIsInPlane(bool status)
Sets the plane normal status for this CSO.
Definition CSO.h:285
void computePlaneNormal()
Forces to recompute the plane normal (status).
Definition CSO.h:282
void storeVisualAttributesInUndoManager()
void setVoxelWriteValue(float value)
Sets the voxel write value of this CSO.
void removeFromAllGroups()
Removes this CSO from all its CSOGroups.
void setSeedPointSelectedAt(unsigned int index)
Sets the seed point at the specified index selected.
unsigned int getGroupIdAt(unsigned int index) const
Returns a CSOGroup ID at the specified index.
Definition CSO.h:217
bool isInPlane() const
Returns the plane status (do all seed points lie in a plane?).
Definition CSO.h:275
double getLength() const
Returns the length of this CSO (this is sum of the the euclidean distances between all successive pat...
void determineNeedsInterpolation()
Determines by investigating the CSO's seed points whether this CSO needs interpolation and sets this ...
void setEditableState(bool state)
Sets the 'editable' state of this CSO.
const std::string & getType() const
Returns the type of the CSO. This is set by the editor or processor that generated this CSO.
Definition CSO.h:238
bool saveAttributes(std::ostream &outStream, bool useAscii=false)
Save attributes to stream and returns whether the saving was successful.
int getPrivateVoxelWriteMode() const
Returns the private attribute 'voxelWriteMode'.
Definition CSO.h:449
CSOSeedPoint * getSeedPointAt(unsigned int index) const
int getVoxelWriteMode() const
Returns the voxel write mode of this CSO.
void fillPathPointCoordinatesFlattened(std::vector< Vector3 > &pathPointCoords) const
Fills up the specified std::vector<Vector3> with all the path point coordinates in order.
CSOManager * getManager() const
void setType(const std::string &type)
Definition CSO.h:236
void setSeedPointAlpha(float alpha)
Sets the alpha value of the seed points.
void setShowState(bool state)
Sets the 'show' status of this CSO.
void setPathPointStyle(int style)
Sets the style of the path points as an int.
Definition CSO.h:374
CSO(CSOList *csoList)
Constructor takes a pointer to the CSOList this CSO is in; in this method, the unique ID is set.
void setAllValuesTo(float value)
Sets all position values to the specified value.
bool getNeedsInterpolation() const
Returns whether this CSO needs interpolation.
Definition CSO.h:317
CSOSeedPoint * getFirstSeedPoint() const
Returns a pointer to the first seed point of this CSO.
Definition CSO.h:147
void loadAttributes(std::istream &inStream, short version, bool swapBytes, bool useAscii=false)
Loads attributes from stream.
unsigned int getTotalNumPathPoints() const
Returns the total number of path points in this CSO; this number may differ from the number of path p...
bool isInGroup(unsigned int groupId) const
Returns whether this CSO is in the CSOGroup with the specified ID.
void setAbsoluteSeedPointMovementCommand()
Sets the absolute movement of a single seed point for undo/redo.
float getSeedPointSize() const
Returns the size of the seed points.
void setIsClosed(bool isClosed)
Sets the closed state of this contour.
float getPrivateVoxelWriteValue() const
Returns the private attribute 'voxelWriteValue'.
Definition CSO.h:451
CSOSeedPoint * appendSeedAndPathPointNoEvent()
bool getPrivateShowState() const
Returns the private attribute 'showState'.
Definition CSO.h:426
void setSelectedSeedPoint(CSOSeedPoint *sPoint)
Sets the specified seed point as being selected, and deselects all previously selected seed points.
bool isInGroup(const CSOGroup *group) const
Returns whether this CSO is in the specified CSOGroup.
int getSeedPointStyle() const
Returns the style of the seed points.
CSOSeedPoint * appendSeedAndPathPoint(const Vector3 &position)
Appends a seed point and a path point list to the end of the seed point list and returns a pointer to...
void setAttributesFrom(const CSO *const cso)
Copies all attributes from the specified CSO to this one.
int getPrivatePathPointStyle() const
Returns the private attribute 'path point style'.
Definition CSO.h:432
CSOPathPoints * getPathPointsAt(unsigned int index) const
Returns the list of path points at a specified position.
Definition CSO.h:162
void setPathPointColor(const Vector3 &color)
Sets the color of the path points.
void addSelectedSeedPoint(CSOSeedPoint *sPoint)
bool isEmpty() const
Returns whether the CSO is empty; an empty CSO has neither seed points nor path points.
Variant getUserData(const std::string &name) const
Returns the user data associated with the specified name, or an invalid value if no such entry exists...
Definition CSO.h:256
bool addToGroup(CSOGroup &group, bool useUndoRedo=true)
const CSOBoundingBox & getWorldBoundingBox() const
void setInitialSeedAndPathPointsNoEvent(unsigned int numSeedPoints, bool isClosed=true)
Like setSeedAndPathPoints, but this method is faster because no events are emitted and no checks are ...
void pathChanged()
Sets any pre-computed values depending on the exact path to invalid.
void moveSeedPointsAndPathPoints(double dx, double dy, double dz)
Moves all seed points and path points by the specified coordinate offset.
void setTimePointIndex(MLint index)
Sets the time point index of this CSO.
virtual ~CSO()
Standard destructor.
const CSOAttributes & getAttributes() const
Returns const access to all CSO attributes.
Definition CSO.h:479
The Variant class stores different data types.
Definition mlVariant.h:36
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
Definition mlTypeDefs.h:489
CSOPathPointsStyle
Enumeration of line styles (order as StylePalette::LineStyle).
Definition CSODefines.h:42
Tvec3< MLdouble > Vector3
A vector with three components of type double.
Definition mlVector3.h:286