#include <opennurbs_subd.h>
◆ ModifiedFlags
Enumerator |
---|
Modified1Bit | if ( 0 != (m_saved_points_flags & Modified1Bit), then the component has been modified and cached subdivision information needs to be recalculated.
|
Modified2Bit | if ( 0 != (m_saved_points_flags & Modified2Bit), then the component is adjacent to a modified component and cached subdivision information needs to be recalculated.
|
ModifiedFlagsMask | ModifiedFlagsMask = Modified1Bit | Modified2Bit if ( 0 != (m_saved_points_flags & ModifiedFlagsMask), then any cached subdivision information on that component needs to be recalculated.
|
◆ SavedPointsFlags
Enumerator |
---|
SubdivisionPointBit | if ( 0 != (m_saved_points_flags & SubdivisionPointBit), then m_cache_subd_P is set.
|
SurfacePointBit | if ( 0 != (m_saved_points_flags & SurfacePointBit), then ON_SubDVertex.m_limit* values are set. ON_SubDVertex: Set means one or more sector limit surface points are saved in ON_SubDVertex.m_limit_point. ON_SubDEdge: Set means the limit surface NURBS curve control points are cached. ON_SubDFace: Set means limit surface mesh fragments are saved in ON_SubDFace.m_surface_mesh_fragments. Unset means any information in the fields identified above is invalid and must be recalculated.
|
CachedPointMask | SubdivisionPointBit | SurfacePointBit.
|
◆ ON_SubDComponentBase() [1/2]
ON_SubDComponentBase::ON_SubDComponentBase |
( |
| ) |
|
|
default |
◆ ~ON_SubDComponentBase()
ON_SubDComponentBase::~ON_SubDComponentBase |
( |
| ) |
|
|
default |
◆ ON_SubDComponentBase() [2/2]
◆ ArchiveId()
unsigned int ON_SubDComponentBase::ArchiveId |
( |
| ) |
const |
|
inline |
Description: Pretend ArchiveId() and SetArchiveId() do not exist. Returns: The ArchiveId is a value set and used by ON_BinaryArchive Read() and Write() functions and copy constructors and operator=(). A public interface is supplied because it is not practical to use friends. Remarks: A value of ON_UNSET_UINT_INDEX indicates the component is not in use.
◆ ClearMark()
bool ON_SubDComponentBase::ClearMark |
( |
| ) |
const |
Description: Clears (sets to false) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. Any code can use Mark() at any time. You cannot assume that other functions including const will not change its value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().
◆ ClearMarkBits()
ON__UINT8 ON_SubDComponentBase::ClearMarkBits |
( |
| ) |
const |
Returns: Set the component mark bits to 0 ( m_status->SetMarkBits( 0 ) ). Remarks: Mark() and MarkBits() are independent.
SubD components have a mutable runtime mark bits that can be used in any context where a single thread cares about the mark bits value. Any code can use MarkBits() at any time. You cannot assume that other functions including const will not change their value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state.
MarkBits() is used in more complex calculations where the single true/false provided by Mark() is not sufficient. Typically MarkBits() is used when a collecection of components needs to be partitioned into more than two sets or when the value of Mark() cannot be changed. Returns: Input value of MarkBits().
◆ ClearSavedSubdivisionPoint()
void ON_SubDComponentBase::ClearSavedSubdivisionPoint |
( |
| ) |
const |
Description: Clears saved subdivision and limit surface information for this component. Attached components are not modified.
◆ ClearSubdivisionDisplacement()
void ON_SubDComponentBase::ClearSubdivisionDisplacement |
( |
| ) |
const |
◆ CompareId()
◆ CopyBaseFrom()
void ON_SubDComponentBase::CopyBaseFrom |
( |
const ON_SubDComponentBase * |
src, |
|
|
bool |
bCopySymmetrySetNext |
|
) |
| |
|
protected |
◆ GetSavedSubdivisionPoint()
bool ON_SubDComponentBase::GetSavedSubdivisionPoint |
( |
double |
subdivision_point[3] | ) |
const |
◆ GetSubdivisionDisplacement()
bool ON_SubDComponentBase::GetSubdivisionDisplacement |
( |
double * |
| ) |
const |
◆ InSymmetrySet()
bool ON_SubDComponentBase::InSymmetrySet |
( |
| ) |
const |
Returns: True if this component is marked being in a symmetry set. Remarks: You must use ON_SubD SymmetrySet member functions to get symmetry set contents.
◆ Internal_ClearModifiedFlags()
void ON_SubDComponentBase::Internal_ClearModifiedFlags |
( |
| ) |
const |
|
protected |
◆ Internal_ClearSubdivisionPointAndSurfacePointFlags()
void ON_SubDComponentBase::Internal_ClearSubdivisionPointAndSurfacePointFlags |
( |
| ) |
const |
|
protected |
Description: Clears the flags indicating the saved subdivision point and surface point information is current.
◆ Internal_ClearSubdivisionPointFlag()
void ON_SubDComponentBase::Internal_ClearSubdivisionPointFlag |
( |
| ) |
const |
|
protected |
Description: Clears the flag indicating the saved subdivision point is current.
◆ Internal_ClearSurfacePointFlag()
void ON_SubDComponentBase::Internal_ClearSurfacePointFlag |
( |
| ) |
const |
|
protected |
Description: Clears the flag indicating the saved surface point information is current.
◆ Internal_Modified1IsSet()
bool ON_SubDComponentBase::Internal_Modified1IsSet |
( |
| ) |
const |
|
protected |
Returns: True if Modified1Bit or Modified2Bit is set.
◆ Internal_Modified1or2IsSet()
bool ON_SubDComponentBase::Internal_Modified1or2IsSet |
( |
| ) |
const |
|
protected |
Returns: True if Modified1Bit or Modified2Bit is set.
◆ Internal_SetModified1Flag()
void ON_SubDComponentBase::Internal_SetModified1Flag |
( |
| ) |
const |
|
protected |
◆ Internal_SetModified2Flag()
void ON_SubDComponentBase::Internal_SetModified2Flag |
( |
| ) |
const |
|
protected |
◆ Internal_SetSavedSurfacePointFlag()
void ON_SubDComponentBase::Internal_SetSavedSurfacePointFlag |
( |
bool |
bSavedSurfacePointFlag | ) |
const |
|
protected |
m_saved_points_flags is a bit field based on ON_SubDComponentBase::SavePointsFlags values. GetSurfacePoint( bUseSavedSurfacePoint=true ) can change the value of m_saved_points_flags
◆ Internal_SubdivisionPointFlag()
bool ON_SubDComponentBase::Internal_SubdivisionPointFlag |
( |
| ) |
const |
|
protected |
◆ Internal_SurfacePointFlag()
bool ON_SubDComponentBase::Internal_SurfacePointFlag |
( |
| ) |
const |
|
protected |
◆ Internal_TransformComponentBase()
void ON_SubDComponentBase::Internal_TransformComponentBase |
( |
bool |
bTransformationSavedSubdivisionPoint, |
|
|
const class ON_Xform & |
xform |
|
) |
| |
|
protected |
◆ IsActive()
bool ON_SubDComponentBase::IsActive |
( |
| ) |
const |
Returns: True if this component is active in its parent subd or other relevant context. Remarks: When a component is in use, IsActive() = true. If was used and then deleted, IsActive() is false.
◆ IsSymmetrySetPrimaryMotif()
bool ON_SubDComponentBase::IsSymmetrySetPrimaryMotif |
( |
| ) |
const |
Returns: True if this component is marked as a primary motif component. Remarks: You must use ON_SubD SymmetrySet member functions to get symmetry set contents.
◆ Mark()
bool ON_SubDComponentBase::Mark |
( |
| ) |
const |
Returns: The current value of the component mark ( m_status->RuntimeMark() ). Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. Any code can use Mark() at any time. You cannot assume that other functions including const will not change its value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state.
◆ MarkBits()
ON__UINT8 ON_SubDComponentBase::MarkBits |
( |
| ) |
const |
Returns: The current value of the component mark bits ( m_status->MarkBits() ). Remarks: Mark() and MarkBits() are independent.
SubD components have a mutable runtime mark bits that can be used in any context where a single thread cares about the mark bits value. Any code can use MarkBits() at any time. You cannot assume that other functions including const will not change their value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state.
MarkBits() is used in more complex calculations where the single true/false provided by Mark() is not sufficient. Typically MarkBits() is used when a collecection of components needs to be partitioned into more than two sets or when the value of Mark() cannot be changed.
◆ operator=()
◆ SavedSubdivisionPoint()
const ON_3dPoint ON_SubDComponentBase::SavedSubdivisionPoint |
( |
| ) |
const |
◆ SavedSubdivisionPointIsSet()
bool ON_SubDComponentBase::SavedSubdivisionPointIsSet |
( |
| ) |
const |
Returns: True if the subdivision point is cached.
◆ SetArchiveId()
void ON_SubDComponentBase::SetArchiveId |
( |
unsigned int |
archive_id | ) |
const |
|
inline |
◆ SetMark() [1/2]
bool ON_SubDComponentBase::SetMark |
( |
| ) |
const |
Description: Sets (sets to true) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. Any code can use Mark() at any time. You cannot assume that other functions including const will not change its value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().
◆ SetMark() [2/2]
bool ON_SubDComponentBase::SetMark |
( |
bool |
bMark | ) |
const |
Description: Sets the value of the component mark to bMark. Parameter: bMark - [in] Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. Any code can use Mark() at any time. You cannot assume that other functions including const will not change its value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().
◆ SetMarkBits()
Returns: Set the component mark bits ( m_status->SetMarkBits( mark_bits ) ). Remarks: Mark() and MarkBits() are independent.
SubD components have a mutable runtime mark bits that can be used in any context where a single thread cares about the mark bits value. Any code can use MarkBits() at any time. You cannot assume that other functions including const will not change their value. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state.
MarkBits() is used in more complex calculations where the single true/false provided by Mark() is not sufficient. Typically MarkBits() is used when a collecection of components needs to be partitioned into more than two sets or when the value of Mark() cannot be changed. Returns: Input value of MarkBits().
◆ SetSavedSubdivisionPoint()
bool ON_SubDComponentBase::SetSavedSubdivisionPoint |
( |
const double |
subdivision_point[3] | ) |
const |
Saved subdivision point Description: Set the saved subdivision point. Parameters: subdivision_point - [in] includes displacement if it exists Returns: true if successful
◆ SetSubdivisionDisplacement()
bool ON_SubDComponentBase::SetSubdivisionDisplacement |
( |
const double * |
| ) |
|
◆ SetSubdivisionLevel()
void ON_SubDComponentBase::SetSubdivisionLevel |
( |
unsigned |
level | ) |
|
Parameters: level - [in] Subdivision level (0 to 255)
◆ Status()
◆ SubdivisionDisplacement()
const ON_3dVector ON_SubDComponentBase::SubdivisionDisplacement |
( |
| ) |
const |
◆ SubdivisionDisplacementIsNonzero()
bool ON_SubDComponentBase::SubdivisionDisplacementIsNonzero |
( |
| ) |
const |
◆ SubdivisionLevel()
const unsigned ON_SubDComponentBase::SubdivisionLevel |
( |
| ) |
const |
Returns: Subdivision level (0 to 255)
◆ ON_Internal_SubDFaceMeshFragmentAccumulator
friend class ON_Internal_SubDFaceMeshFragmentAccumulator |
|
friend |
◆ ON_SubDArchiveIdMap
friend class ON_SubDArchiveIdMap |
|
friend |
Symmetry sets are a linked loops of components order so that symmetry(component) = next component. There is exactly one motif in each symmetry set. The motif component is marked with 1 == m_symmetry_set_next.ComponentDirection(). The next component in the symmetry set loop is m_symmetry_set_next.Vertex()/Edge()/Face(). When a symmetry set is a singleton (fixed component in the symmetry), this = m_symmetry_set_next and m_symmetry_set_next.ComponentDirection()= 1. The only safe way query, set, and clear symmetry set information is to use ON_SubD.*SymmetrySet*() functions. Any other technique is not supported and will cause crashes.
◆ ON_SubDHeap
◆ m_group_id
unsigned int ON_SubDComponentBase::m_group_id = 0U |
|
mutable |
All the faces with the same nonzero value of m_group_id are in the same "group". SDK interface on ON_SubD will be added after we get a better idea of how this feature will be used.
◆ m_id
unsigned int ON_SubDComponentBase::m_id = 0 |
◆ m_level
unsigned char ON_SubDComponentBase::m_level = 0U |
|
protected |
◆ m_saved_points_flags
unsigned char ON_SubDComponentBase::m_saved_points_flags = 0U |
|
mutableprotected |
◆ m_saved_subd_point1
double ON_SubDComponentBase::m_saved_subd_point1[3] |
|
mutableprotected |
GetSubdivisionPoint( bUseSavedSubdivisionPoint=true ) can change the value of m_cache_subd_P.
saved subdivision point
◆ m_status
◆ m_subd_point1
const class ON_SubDVertex* ON_SubDComponentBase::m_subd_point1 = nullptr |
The audience for this comment is anybody who wants to change the data fields in ON_SubDComponentBase. Everyone else should ignore this comment. ON_SubD components come from ON_FixedSizePool and ON_SubD code uses ON_FixedSizePool.ReturnElement. The first sizeof(void*) bytes must be a data field that is not referenced in returned elements. Since a returned element cannot have a "next level vertex", m_subd_point1 is a good data member to put first. m_subd_point1 points to the next level's vertex when this component has been subdivided using an algorithm like Catmull-Clark or Loop-Warren.
◆ Unset