ui: typed edges

Edges in the graph view are now colored according to their type.
This commit is contained in:
Manuel Dobusch
2014-07-16 15:38:54 +02:00
parent 40ca86a172
commit 2c9c83d003
9 changed files with 94 additions and 49 deletions
@@ -211,37 +211,31 @@ std::set<DummyEdge> GraphController::getNeighbourEdgesOfNode(const DummyNode& no
{
std::set<DummyEdge> result;
std::vector<std::pair<Id, Id>> rawEdges;
std::vector<std::pair<Id, Id>> callEdges = m_graphAccess->getCallEdgesOfNode(node.tokenId);
std::vector<std::pair<Id, Id>> usageEdges = m_graphAccess->getUsageEdgesOfNode(node.tokenId);
std::vector<std::pair<Id, Id>> typeOfEdges = m_graphAccess->getTypeOfEdgesOfNode(node.tokenId);
std::vector<std::pair<Id, Id>> returnTypeEdges = m_graphAccess->getReturnTypeOfEdgesOfNode(node.tokenId);
std::vector<std::pair<Id, Id>> parameterEdges = m_graphAccess->getParameterOfEdgesOfNode(node.tokenId);
if(callEdges.size() > 0)
for(unsigned int i = 0; i < callEdges.size(); i++)
{
rawEdges.insert(rawEdges.end(), callEdges.begin(), callEdges.end());
result.insert(DummyEdge(callEdges[i].first, callEdges[i].second, Edge::EdgeType::EDGE_CALL));
}
if(usageEdges.size() > 0)
for(unsigned int i = 0; i < usageEdges.size(); i++)
{
rawEdges.insert(rawEdges.end(), usageEdges.begin(), usageEdges.end());
result.insert(DummyEdge(usageEdges[i].first, usageEdges[i].second, Edge::EdgeType::EDGE_USAGE));
}
if(typeOfEdges.size() > 0)
for(unsigned int i = 0; i < typeOfEdges.size(); i++)
{
rawEdges.insert(rawEdges.end(), typeOfEdges.begin(), typeOfEdges.end());
result.insert(DummyEdge(typeOfEdges[i].first, typeOfEdges[i].second, Edge::EdgeType::EDGE_TYPE_OF));
}
if(returnTypeEdges.size() > 0)
for(unsigned int i = 0; i < returnTypeEdges.size(); i++)
{
rawEdges.insert(rawEdges.end(), returnTypeEdges.begin(), returnTypeEdges.end());
result.insert(DummyEdge(returnTypeEdges[i].first, returnTypeEdges[i].second, Edge::EdgeType::EDGE_RETURN_TYPE_OF));
}
if(parameterEdges.size() > 0)
for(unsigned int i = 0; i < parameterEdges.size(); i++)
{
rawEdges.insert(rawEdges.end(), parameterEdges.begin(), parameterEdges.end());
}
for(unsigned int i = 0; i < rawEdges.size(); i++)
{
result.insert(DummyEdge(rawEdges[i].first, rawEdges[i].second));
result.insert(DummyEdge(parameterEdges[i].first, parameterEdges[i].second, Edge::EdgeType::EDGE_PARAMETER_TYPE_OF));
}
for(unsigned int i = 0; i < node.subNodes.size(); i++)
@@ -3,8 +3,11 @@
#include <memory>
#include "utility/math/Vector4.h"
#include "utility/types.h"
#include "data/graph/Edge.h"
class GraphNode;
class GraphEdge
@@ -20,15 +23,19 @@ public:
virtual std::weak_ptr<GraphNode> getOwner() = 0;
virtual std::weak_ptr<GraphNode> getTarget() = 0;
virtual void setColor(const Vec4i& color) = 0;
virtual Vec4i getColor() const = 0;
};
// temporary data structure for (visual) graph creation process
struct DummyEdge
{
public:
DummyEdge(const Id o, const Id t)
DummyEdge(const Id o, const Id t, Edge::EdgeType type)
: ownerId(o)
, targetId(t)
, edgeType(type)
{
}
@@ -66,6 +73,8 @@ public:
Id ownerId;
Id targetId;
Edge::EdgeType edgeType;
};
#endif // GRAPH_EDGE_H
+2 -2
View File
@@ -28,7 +28,7 @@ public:
Vector2<T> normalized() const;
template<class U>
void operator=(Vector2<U>& other);
void operator=(const Vector2<U>& other);
protected:
static const unsigned int m_xIndex = 0;
@@ -131,7 +131,7 @@ Vector2<T> Vector2<T>::normalized() const
template<class T>
template<class U>
void Vector2<T>::operator=(Vector2<U>& other)
void Vector2<T>::operator=(const Vector2<U>& other)
{
this->assign(other);
}
+9 -2
View File
@@ -30,7 +30,7 @@ public:
Vector4<T> normalized() const;
template<class U>
void operator=(Vector4<U>& other);
void operator=(const Vector4<U>& other);
protected:
static const unsigned int m_xIndex = 0;
@@ -145,9 +145,16 @@ Vector4<T> Vector4<T>::normalized() const
return VectorBase<T, 4>::normalized();
}
//template<class T>
//template<class U>
//void Vector4<T>::operator=(Vector4<U>& other)
//{
// this->assign(other);
//}
template<class T>
template<class U>
void Vector4<T>::operator=(Vector4<U>& other)
void Vector4<T>::operator=(const Vector4<U>& other)
{
this->assign(other);
}
+2 -2
View File
@@ -57,7 +57,7 @@ public:
T operator[](const unsigned int index);
template<class U>
void operator=(VectorBase<U, N>& other);
void operator=(const VectorBase<U, N>& other);
template<class U>
VectorBase<T, N> operator+(const VectorBase<U, N>& other) const;
@@ -325,7 +325,7 @@ T VectorBase<T, N>::operator[](const unsigned int index)
template<class T, unsigned int N>
template<class U>
void VectorBase<T, N>::operator=(VectorBase<U, N>& other)
void VectorBase<T, N>::operator=(const VectorBase<U, N>& other)
{
assign(other);
}