1 /******************************************************************************
3 * Copyright (C) 1997-2019 by Dimitri van Heesch.
5 * Permission to use, copy, modify, and distribute this software and its
6 * documentation under the terms of the GNU General Public License is hereby
7 * granted. No representations are made about the suitability of this software
8 * for any purpose. It is provided "as is" without express or implied warranty.
9 * See the GNU General Public License for more details.
11 * Documents produced by Doxygen are derivative works derived from the
12 * input used in their production; they are not affected by this license.
16 #ifndef DOTGROUPCOLLABORATION_H
17 #define DOTGROUPCOLLABORATION_H
27 /** Representation of a group collaboration graph */
28 class DotGroupCollaboration : public DotGraph
31 DotGroupCollaboration(const GroupDef* gd);
32 ~DotGroupCollaboration();
33 QCString writeGraph(TextStream &t, GraphOutputFormat gf,EmbeddedOutputFormat ef,
34 const QCString &path,const QCString &fileName,const QCString &relPath,
35 bool writeImageMap=TRUE,int graphId=-1);
36 bool isTrivial() const;
37 bool isTooBig() const;
41 virtual QCString getBaseName() const;
42 virtual QCString getMapLabel() const;
43 virtual void computeTheGraph();
59 Link(const QCString &lab,const QCString &u) : label(lab), url(u) {}
66 Edge(DotNode *start,DotNode *end,EdgeType type)
67 : pNStart(start), pNEnd(end), eType(type) {}
73 std::vector<Link> links;
74 void write( TextStream &t ) const;
77 void buildGraph(const GroupDef* gd);
78 void addCollaborationMember(const Definition* def, QCString& url, EdgeType eType );
79 void addMemberList( class MemberList* ml );
80 void writeGraphHeader(TextStream &t,const QCString &title) const;
81 Edge* addEdge( DotNode* _pNStart, DotNode* _pNEnd, EdgeType _eType,
82 const QCString& _label, const QCString& _url );
85 DotNodeMap m_usedNodes;
87 std::vector< std::unique_ptr<Edge> > m_edges;
90 using DotGroupCollaborationPtr = std::shared_ptr<DotGroupCollaboration>;