#include <Standard_GUID.hxx>
#include <NCollection_Map.hxx>
#include <TColStd_HArray1OfByte.hxx>
+#include <TDataStd_Name.hxx>
#include <TDF_Label.hxx>
#include <TDF_LabelMapHasher.hxx>
#include <TDF_ChildIDIterator.hxx>
#include <XCAFDoc_NoteBalloon.hxx>
#include <XCAFDoc_NoteComment.hxx>
#include <XCAFDoc_NoteBinData.hxx>
+#include <XCAFDoc_AssemblyItemId.hxx>
#include <XCAFDoc_AssemblyItemRef.hxx>
namespace {
enum NotesTool_RootLabels
{
NotesTool_NotesRoot = 1,
- NotesTool_AnnotatedItemsRoot
+ NotesTool_AnnotatedItemsRoot,
+ NotesTool_NoteGroupsRoot
};
// =======================================================================
return Label().FindChild(NotesTool_AnnotatedItemsRoot);
}
+// =======================================================================
+// function : GetNoteGroupsLabel
+// purpose :
+// =======================================================================
+TDF_Label XCAFDoc_NotesTool::GetGroupsLabel() const
+{
+ return Label().FindChild(NotesTool_NoteGroupsRoot);
+}
+
// =======================================================================
// function : NbNotes
// purpose :
Standard_Integer nbItems = 0;
for (TDF_ChildIDIterator anIter(GetAnnotatedItemsLabel(), XCAFDoc_AssemblyItemRef::GetID()); anIter.More(); anIter.Next())
{
- ++nbItems;
+ ++nbItems;
}
return nbItems;
}
+// =======================================================================
+// function : NbNoteGroups
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::NbGroups() const
+{
+ Standard_Integer nbGroups = 0;
+ for (TDF_ChildIterator anIter(GetGroupsLabel()); anIter.More(); anIter.Next())
+ {
+ ++nbGroups;
+ }
+ return nbGroups;
+}
+
// =======================================================================
// function : GetNotes
// purpose :
}
}
+// =======================================================================
+// function : GetNoteGroups
+// purpose :
+// =======================================================================
+void
+XCAFDoc_NotesTool::GetGroups(TDF_LabelSequence& theNoteGroupLabels) const
+{
+ for (TDF_ChildIterator anIter(GetGroupsLabel()); anIter.More(); anIter.Next())
+ {
+ theNoteGroupLabels.Append(anIter.Value());
+ }
+}
+
// =======================================================================
// function : IsAnnotatedItem
// purpose :
if (!anItemRef.IsNull() && anItemRef->GetItem().IsEqual(theItemId) && !anItemRef->HasExtraRef())
return anItemRef->Label();
}
+
return TDF_Label();
}
for (TDF_ChildIDIterator anIter(GetAnnotatedItemsLabel(), XCAFDoc_AssemblyItemRef::GetID()); anIter.More(); anIter.Next())
{
Handle(XCAFDoc_AssemblyItemRef) anItemRef = Handle(XCAFDoc_AssemblyItemRef)::DownCast(anIter.Value());
- if (!anItemRef.IsNull() && anItemRef->GetItem().IsEqual(theItemId) &&
+ if (!anItemRef.IsNull() && anItemRef->GetItem().IsEqual(theItemId) &&
anItemRef->HasExtraRef() && anItemRef->GetGUID() == theGUID)
return anItemRef->Label();
}
+
return TDF_Label();
}
anItemRef->HasExtraRef() && anItemRef->GetSubshapeIndex() == theSubshapeIndex)
return anItemRef->Label();
}
+
return TDF_Label();
}
return XCAFDoc_NoteBinData::Set(aNoteLabel, theUserName, theTimeStamp, theTitle, theMIMEtype, theData);
}
+// =======================================================================
+// function : IsGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::IsGroup(const TDF_Label& theLabel) const
+{
+ return !theLabel.IsNull() && !theLabel.Father().IsNull()
+ && theLabel.Father().IsEqual(GetGroupsLabel());
+}
+
+// =======================================================================
+// function : CreateGroup
+// purpose :
+// =======================================================================
+TDF_Label
+XCAFDoc_NotesTool::CreateGroup(const TCollection_ExtendedString& theGroupName)
+{
+ TDF_TagSource aTag;
+ TDF_Label aGroupLabel = aTag.NewChild(GetGroupsLabel());
+ if (!aGroupLabel.IsNull())
+ {
+ if (TDataStd_Name::Set(aGroupLabel, theGroupName).IsNull())
+ aGroupLabel.Nullify();
+ }
+ return aGroupLabel;
+}
+
+// =======================================================================
+// function : AddToGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::GetGroupName(const TDF_Label& theGroupLabel,
+ TCollection_ExtendedString& theGroupName)
+{
+ if (!IsGroup(theGroupLabel))
+ return Standard_False;
+
+ Handle(TDataStd_Name) aName;
+ if (!theGroupLabel.FindAttribute(TDataStd_Name::GetID(), aName))
+ return Standard_False;
+
+ theGroupName = aName->Get();
+ return Standard_True;
+}
+
+// =======================================================================
+// function : NbGroupNotes
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::NbGroupNotes(const TDF_Label& theGroupLabel) const
+{
+ if (!IsGroup(theGroupLabel))
+ return 0;
+
+ Standard_Integer aNbNotes = 0;
+
+ Handle(XCAFDoc_GraphNode) aFather;
+ if (theGroupLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather) && !aFather.IsNull())
+ {
+ aNbNotes = aFather->NbChildren();
+ }
+
+ return aNbNotes;
+}
+
+// =======================================================================
+// function : AddToGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::AddToGroup(const TDF_Label& theGroupLabel,
+ const Handle(XCAFDoc_Note)& theNote)
+{
+ return !theNote.IsNull() && AddToGroup(theGroupLabel, theNote->Label());
+}
+
+// =======================================================================
+// function : AddToGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::AddToGroup(const TDF_Label& theGroupLabel,
+ const TDF_Label& theNoteLabel)
+{
+ if (!XCAFDoc_Note::IsMine(theNoteLabel))
+ return Standard_False;
+
+ Handle(XCAFDoc_GraphNode) aFather;
+ if (!theGroupLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather))
+ {
+ aFather = XCAFDoc_GraphNode::Set(theGroupLabel, XCAFDoc::NoteRefGUID());
+ if (aFather.IsNull())
+ return Standard_False;
+ }
+
+ Handle(XCAFDoc_GraphNode) aChild;
+ if (!theNoteLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
+ {
+ aChild = XCAFDoc_GraphNode::Set(theNoteLabel, XCAFDoc::NoteRefGUID());
+ if (aChild.IsNull())
+ return Standard_False;
+ }
+
+ aFather->SetChild(aChild);
+ aChild->SetFather(aFather);
+
+ return Standard_True;
+}
+
+// =======================================================================
+// function : AddToGroup
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::AddToGroup(const TDF_Label& theGroupLabel,
+ const TDF_LabelSequence& theNoteLabels)
+{
+ Standard_Integer aNbAdded = 0;
+ for (TDF_LabelSequence::Iterator anIter(theNoteLabels); anIter.More(); anIter.Next())
+ {
+ if (AddToGroup(theGroupLabel, anIter.Value()))
+ ++aNbAdded;
+ }
+ return aNbAdded;
+}
+
+// =======================================================================
+// function : RemoveFromGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const Handle(XCAFDoc_Note)& theNote)
+{
+ return !theNote.IsNull() && RemoveFromGroup(theGroupLabel, theNote->Label());
+}
+
+// =======================================================================
+// function : RemoveFromGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const TDF_Label& theNoteLabel)
+{
+ if (!IsGroup(theGroupLabel))
+ return Standard_False;
+
+ Handle(XCAFDoc_GraphNode) aFather;
+ if (theGroupLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather) && !aFather.IsNull())
+ {
+ Standard_Integer nbChildren = aFather->NbChildren();
+ for (Standard_Integer iChild = 1; iChild <= nbChildren; ++iChild)
+ {
+ Handle(XCAFDoc_GraphNode) aChild = aFather->GetFather(iChild);
+ if (!aChild.IsNull() && theNoteLabel.IsEqual(aChild->Label()))
+ {
+ aFather->UnSetChild(aChild);
+ return Standard_True;
+ }
+ }
+ }
+
+ return Standard_False;
+}
+
+// =======================================================================
+// function : RemoveFromGroup
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const TDF_LabelSequence& theNoteLabels)
+{
+ Standard_Integer aNbRemoved = 0;
+ for (TDF_LabelSequence::Iterator anIter(theNoteLabels); anIter.More(); anIter.Next())
+ {
+ if (RemoveFromGroup(theGroupLabel, anIter.Value()))
+ ++aNbRemoved;
+ }
+ return aNbRemoved;
+}
+
+// =======================================================================
+// function : ClearGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::ClearGroup(const TDF_Label& theGroupLabel,
+ Standard_Boolean theDeleteNotes)
+{
+ if (!IsGroup(theGroupLabel))
+ return Standard_False;
+
+ Handle(XCAFDoc_GraphNode) aFather;
+ if (theGroupLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather) && !aFather.IsNull())
+ {
+ while (aFather->NbChildren() > 0)
+ {
+ Handle(XCAFDoc_GraphNode) aChild = aFather->GetChild(1);
+ if (!aChild.IsNull())
+ aFather->UnSetChild(aChild);
+ if (theDeleteNotes)
+ DeleteNote(aChild->Label());
+ }
+ }
+
+ return Standard_True;
+}
+
+// =======================================================================
+// function : GetGroupNotes
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::GetGroupNotes(const TDF_Label& theGroupLabel,
+ TDF_LabelSequence& theNoteLabels) const
+{
+ if (!IsGroup(theGroupLabel))
+ return 0;
+
+ Standard_Integer aNbNotes = 0;
+
+ Handle(XCAFDoc_GraphNode) aFather;
+ if (theGroupLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather) && !aFather.IsNull())
+ {
+ Standard_Integer nbChildren = aFather->NbChildren();
+ for (Standard_Integer iChild = 1; iChild <= nbChildren; ++iChild)
+ {
+ Handle(XCAFDoc_GraphNode) aChild = aFather->GetChild(iChild);
+ theNoteLabels.Append(aChild->Label());
+ }
+ }
+
+ return aNbNotes;
+}
+
+// =======================================================================
+// function : GetUngropedNotes
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::GetUngropedNotes(TDF_LabelSequence& theNoteLabels) const
+{
+ TDF_LabelSequence aNotes;
+ GetNotes(aNotes);
+ if (aNotes.IsEmpty())
+ return 0;
+
+ Standard_Integer nbNotes = 0;
+ for (TDF_LabelSequence::Iterator anIter(aNotes); anIter.More(); anIter.Next())
+ {
+ TDF_LabelSequence aGroups;
+ if (GetNoteGroups(anIter.Value(), aGroups) == 0)
+ {
+ theNoteLabels.Append(anIter.Value());
+ ++nbNotes;
+ }
+ }
+ return nbNotes;
+}
+
+// =======================================================================
+// function : GetNoteGroups
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::GetNoteGroups(const Handle(XCAFDoc_Note)& theNote,
+ TDF_LabelSequence& theGroupLabels) const
+{
+ return !theNote.IsNull() ? GetNoteGroups(theNote->Label(), theGroupLabels) : 0;
+}
+
+// =======================================================================
+// function : GetNoteGroups
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::GetNoteGroups(const TDF_Label& theNoteLabel,
+ TDF_LabelSequence& theGroupLabels) const
+{
+ if (!XCAFDoc_Note::IsMine(theNoteLabel))
+ return 0;
+
+ Standard_Integer nbGroups = 0;
+ Handle(XCAFDoc_GraphNode) aChild;
+ if (theNoteLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aChild) && !aChild.IsNull())
+ {
+ Standard_Integer nbFathers = aChild->NbFathers();
+ for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
+ {
+ Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
+ if (IsGroup(aFather->Label()))
+ {
+ theGroupLabels.Append(aFather->Label());
+ ++nbGroups;
+ }
+ }
+ }
+ return nbGroups;
+}
+
+// =======================================================================
+// function : DeleteGroup
+// purpose :
+// =======================================================================
+Standard_Boolean
+XCAFDoc_NotesTool::DeleteGroup(const TDF_Label& theGroupLabel,
+ Standard_Boolean theDeleteNotes)
+{
+ if (ClearGroup(theGroupLabel, theDeleteNotes))
+ {
+ theGroupLabel.ForgetAllAttributes();
+ return Standard_True;
+ }
+
+ return Standard_False;
+}
+
+// =======================================================================
+// function : DeleteAllGroups
+// purpose :
+// =======================================================================
+Standard_Integer
+XCAFDoc_NotesTool::DeleteAllGroups(Standard_Boolean theDeleteNotes)
+{
+ Standard_Integer nbGroups = 0;
+ for (TDF_ChildIterator anIter(GetGroupsLabel()); anIter.More(); anIter.Next())
+ {
+ if (DeleteGroup(anIter.Value(), theDeleteNotes))
+ ++nbGroups;
+ }
+ return nbGroups;
+}
+
// =======================================================================
// function : GetNotes
// purpose :
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
return 0;
+ Standard_Integer nbNotes = 0;
Standard_Integer nbFathers = aChild->NbFathers();
for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
{
Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
theNoteLabels.Append(aFather->Label());
+ ++nbNotes;
}
- return theNoteLabels.Length();
+ return nbNotes;
}
// =======================================================================
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
return 0;
+ Standard_Integer nbNotes = 0;
Standard_Integer nbFathers = aChild->NbFathers();
for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
{
Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
theNoteLabels.Append(aFather->Label());
+ ++nbNotes;
}
- return theNoteLabels.Length();
+ return nbNotes;
}
// =======================================================================
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
return 0;
+ Standard_Integer nbNotes = 0;
Standard_Integer nbFathers = aChild->NbFathers();
for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
{
Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
theNoteLabels.Append(aFather->Label());
+ ++nbNotes;
}
- return theNoteLabels.Length();
+ return nbNotes;
}
// =======================================================================
if (!XCAFDoc_Note::IsMine(theNoteLabel))
return anItemRef;
- Handle(XCAFDoc_GraphNode) aChild;
TDF_Label anAnnotatedItem = FindAnnotatedItem(theItemId);
if (anAnnotatedItem.IsNull())
{
return anItemRef;
}
+ Handle(XCAFDoc_GraphNode) aChild;
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
{
aChild = XCAFDoc_GraphNode::Set(anAnnotatedItem, XCAFDoc::NoteRefGUID());
Handle(XCAFDoc_GraphNode) aChild = aFather->GetChild(1);
aFather->UnSetChild(aChild);
if (aChild->NbFathers() == 0)
- aChild->Label().ForgetAllAttributes(Standard_True);
+ aChild->Label().ForgetAllAttributes();
}
}
- theNoteLabel.ForgetAllAttributes(Standard_True);
+ theNoteLabel.ForgetAllAttributes();
return Standard_True;
}
return Standard_False;
#include <Standard.hxx>
#include <Standard_Type.hxx>
#include <TDF_Attribute.hxx>
+#include <TDF_AttributeMap.hxx>
#include <TDF_LabelSequence.hxx>
class OSD_File;
//! | 0:1:9 |
//! ------------------------
//! |1
-//! | ------------------- ---------------------------
-//! +___| Notes |-----| XCAFDoc_Note |
-//! | 1| 0:1:9:1 |1 *| 0:1:9:1:* |
-//! | ------------------- ---------------------------
-//! | !*
-//! | { XCAFDoc_GraphNode }
-//! | *!
-//! | ------------------- ---------------------------
-//! +___| Annotated items |-----| XCAFDoc_AssemblyItemRef |
-//! 1| 0:1:9:2 |1 *| 0:1:9:2:* |
-//! ------------------- ---------------------------
+//! | ------------------- ---------------------------
+//! +___| Notes |------| XCAFDoc_Note |
+//! | 1| 0:1:9:1 |1 *| 0:1:9:1:* |
+//! | ------------------- ---------------------------
+//! | [C] * [F]
+//! | --- { XCAFDoc_GraphNode } ---|
+//! | [F] * |
+//! | ------------------- |
+//! +___| Note groups | { XCAFDoc_GraphNode }
+//! | 1| 0:1:9:3 | |
+//! | ------------------- |
+//! | |
+//! | * [C]
+//! | ------------------- ---------------------------
+//! +___| Annotated items |------| XCAFDoc_AssemblyItemRef |
+//! 1| 0:1:9:2 |1 *| 0:1:9:2:* |
+//! ------------------- ---------------------------
//!
//! A typical annotation procedure is illustrated by the code example below:
//! \code{.c++}
//! Returns the label of the annotated items hive.
Standard_EXPORT TDF_Label GetAnnotatedItemsLabel() const;
+ //! Returns the label of the note groups hive.
+ Standard_EXPORT TDF_Label GetGroupsLabel() const;
+
//! Returns the number of labels in the notes hive.
Standard_EXPORT Standard_Integer NbNotes() const;
//! Returns the number of labels in the annotated items hive.
Standard_EXPORT Standard_Integer NbAnnotatedItems() const;
+ //! Returns the number of labels in the note groups hive.
+ Standard_EXPORT Standard_Integer NbGroups() const;
+
//! Returns all labels from the notes hive.
//! The label sequence isn't cleared beforehand.
//! \param [out] theNoteLabels - sequence of labels.
//! \param [out] theNoteLabels - sequence of labels.
Standard_EXPORT void GetAnnotatedItems(TDF_LabelSequence& theLabels) const;
+ //! Returns all labels from the note groups hive.
+ //! The label sequence isn't cleared beforehand.
+ //! \param [out] theGroupLabels - sequence of labels.
+ Standard_EXPORT void GetGroups(TDF_LabelSequence& theGroupLabels) const;
+
//! Checks if the given assembly item is annotated.
//! \param [in] theItemId - assembly item ID.
//! \return true if the item is annotated, otherwise - false.
//! @}
+ //! @name Note groups functions
+ //! @{
+
+ //! Checks if the label is a note group.
+ //! \param [in] theLabel - label.
+ //! \return true if the label is a child of the note groups hive, otherwise - false.
+ Standard_EXPORT Standard_Boolean IsGroup(const TDF_Label& theLabel) const;
+
+ //! Create a new note group.
+ //! \param [in] theGroupName - the user associated with the note.
+ //! \return new group label.
+ Standard_EXPORT TDF_Label CreateGroup(const TCollection_ExtendedString& theGroupName);
+
+ //! Get group name.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [out] theGroupName - group name.
+ //! \return true if the label is group, otherwise - false.
+ Standard_EXPORT Standard_Boolean GetGroupName(const TDF_Label& theGroupLabel,
+ TCollection_ExtendedString& theGroupName);
+
+ //! Returns the number of notes in the group.
+ //! \param [in] theGroupLabel - group label.
+ Standard_EXPORT Standard_Integer NbGroupNotes(const TDF_Label& theGroupLabel) const;
+
+ //! Adds note to group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNote - attribute identifying the note.
+ //! \return true if theNote was successfully added to the specified group, otherwise - false.
+ Standard_EXPORT Standard_Boolean AddToGroup(const TDF_Label& theGroupLabel,
+ const Handle(XCAFDoc_Note)& theNote);
+
+ //! Adds note to group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNoteLabel - note label.
+ //! \return true if theNote was successfully added to the specified group, otherwise - false.
+ Standard_EXPORT Standard_Boolean AddToGroup(const TDF_Label& theGroupLabel,
+ const TDF_Label& theNoteLabel);
+
+ //! Adds notes to group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNoteLabels - note label sequence.
+ //! \return the number of notes added to the group.
+ Standard_EXPORT Standard_Integer AddToGroup(const TDF_Label& theGroupLabel,
+ const TDF_LabelSequence& theNoteLabels);
+
+ //! Removes note from the group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNote - attribute identifying the note.
+ //! \return true if the note was successfully from the group, otherwise - false.
+ Standard_EXPORT Standard_Boolean RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const Handle(XCAFDoc_Note)& theNote);
+
+ //! Removes note from the group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNoteLabel - note label.
+ //! \return true if the note was successfully from the group, otherwise - false.
+ Standard_EXPORT Standard_Boolean RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const TDF_Label& theNoteLabel);
+
+ //! Removes notes from the group.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [in] theNoteLabels - note label sequence.
+ //! \return the number of removed notes.
+ Standard_EXPORT Standard_Integer RemoveFromGroup(const TDF_Label& theGroupLabel,
+ const TDF_LabelSequence& theNoteLabels);
+
+ //! Removes all notes from the group.
+ //! \param [in] theGroupLabel - group label.
+ //! \return the number of removed notes.
+ Standard_EXPORT Standard_Boolean ClearGroup(const TDF_Label& theGroupLabel,
+ Standard_Boolean theDeleteNotes = Standard_False);
+
+ //! Retrieves notes from group.
+ //! Out label sequence isn't cleared.
+ //! \param [in] theGroupLabel - group label.
+ //! \param [out] theNoteLabels - note label sequence.
+ //! \return the number of retrieved notes.
+ Standard_EXPORT Standard_Integer GetGroupNotes(const TDF_Label& theGroupLabel,
+ TDF_LabelSequence& theNoteLabels) const;
+
+ //! Retrieves groups, to which the note belongs.
+ //! Out label sequence isn't cleared.
+ //! \param [in] theNote - attribute identifying the note.
+ //! \param [out] theGroupLabels - group label sequence.
+ //! \return the number of retrieved groups.
+ Standard_EXPORT Standard_Integer GetNoteGroups(const Handle(XCAFDoc_Note)& theNote,
+ TDF_LabelSequence& theGroupLabels) const;
+
+ //! Retrieves groups, to which the note belongs.
+ //! Out label sequence isn't cleared.
+ //! \param [in] theNoteLabel - note label.
+ //! \param [out] theGroupLabels - group label sequence.
+ //! \return the number of retrieved groups.
+ Standard_EXPORT Standard_Integer GetNoteGroups(const TDF_Label& theNoteLabel,
+ TDF_LabelSequence& theGroupLabels) const;
+
+ //! Retrieves notes, which don't belong to any group.
+ //! Out label sequence isn't cleared.
+ //! \param [out] theNoteLabels - note label sequence.
+ //! \return the number of retrieved notes.
+ Standard_EXPORT Standard_Integer GetUngropedNotes(TDF_LabelSequence& theNoteLabels) const;
+
+ //! Delete group.
+ //! \param [in] theGroupLabel - group label.
+ //! \return true if the group was successfully deleted, otherwise - false.
+ Standard_EXPORT Standard_Boolean DeleteGroup(const TDF_Label& theGroupLabel,
+ Standard_Boolean theDeleteNotes = Standard_False);
+
+ //! Delete all groups.
+ //! \return the number of deleted groups.
+ Standard_EXPORT Standard_Integer DeleteAllGroups(Standard_Boolean theDeleteNotes = Standard_False);
+
+ //! @}
+
//! @name Get notes from annotated items functions
//! @{
Standard_EXPORT void Paste(const Handle(TDF_Attribute)& theAttrInto,
const Handle(TDF_RelocationTable)& theRT) const Standard_OVERRIDE;
Standard_EXPORT Standard_OStream& Dump(Standard_OStream& theOS) const Standard_OVERRIDE;
-
};
DEFINE_STANDARD_HANDLE(XCAFDoc_NotesTool, TDF_Attribute)