本文整理汇总了C++中GraphAttributes::strokeColor方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphAttributes::strokeColor方法的具体用法?C++ GraphAttributes::strokeColor怎么用?C++ GraphAttributes::strokeColor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphAttributes
的用法示例。
在下文中一共展示了GraphAttributes::strokeColor方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BendPromotion
void BendPromotion(Graph& G, GraphAttributes& GA) {
List<edge> edges;
G.allEdges(edges);
while (!edges.empty()) {
edge e = edges.popFrontRet();
DPolyline bends_e = GA.bends(e);
node s = e->source();
node t = e->target();
//check if an edge has bendpoints
if (!bends_e.empty()) {
while (!bends_e.empty()) {
DPoint p = bends_e.front();
//insert new node
node n = G.newNode();
GA.x(n) = p.m_x;
GA.y(n) = p.m_y;
edge e_ = G.newEdge(s, n);
GA.arrowType(e_) = ogdf::EdgeArrow::None;
GA.strokeColor(e_) = Color("#bababa");
s = n;
bends_e.popFront();
}
edge e_ = G.newEdge(s, t);
GA.arrowType(e_) = ogdf::EdgeArrow::None;
GA.strokeColor(e_) = Color("#bababa");
G.delEdge(e);
}
}
}
示例2: CreateGraphTwo
// create testGraph to test criteria imlementations
void CreateGraphTwo(Graph& graph, GraphAttributes& GA) {
// add nodes
node Adresses = graph.newNode();
node Schools = graph.newNode();
node Subjects = graph.newNode();
node Parent_Adresses = graph.newNode();
node Student_Adresses = graph.newNode();
node Parents = graph.newNode();
node Student_Parents = graph.newNode();
node Teachers = graph.newNode();
node Classes = graph.newNode();
node Family_Members = graph.newNode();
node Students = graph.newNode();
node Student_Classes = graph.newNode();
node Families = graph.newNode();
node Homework = graph.newNode();
node Reports = graph.newNode();
GA.label(Adresses) = "Adresses";
GA.label(Schools) = "Schools";
GA.label(Subjects) = "Subjects";
GA.label(Parent_Adresses) = "Parent_Adresses";
GA.label(Student_Adresses) = "Student_Adresses";
GA.label(Parents) = "Parents";
GA.label(Student_Parents) = "Student_Parents";
GA.label(Teachers) = "Teachers";
GA.label(Classes) = "Classes";
GA.label(Family_Members) = "Family_Members";
GA.label(Students) = "Students";
GA.label(Student_Classes) = "Student_Classes";
GA.label(Families) = "Families";
GA.label(Homework) = "Homework";
GA.label(Reports) = "Reports";
// add edgraphes
edge SchoolsToAdresses = graph.newEdge(Schools, Adresses);
edge Parent_AdressesToAdresses = graph.newEdge(Parent_Adresses, Adresses);
edge Parent_AdressesToParents = graph.newEdge(Parent_Adresses, Parents);
edge Student_AdressesToAdresses = graph.newEdge(Student_Adresses, Adresses);
edge Student_AdressesToStudents = graph.newEdge(Student_Adresses, Students);
edge Student_ParentsToParents = graph.newEdge(Student_Parents, Parents);
edge Student_ParentsToStudents = graph.newEdge(Student_Parents, Students);
edge TeachersToSchools = graph.newEdge(Teachers, Schools);
edge ClassesToSubjects = graph.newEdge(Classes, Subjects);
edge ClassesToTeachers = graph.newEdge(Classes, Teachers);
edge Family_MembersToParents = graph.newEdge(Family_Members, Parents);
edge Family_MembersToFamilies = graph.newEdge(Family_Members, Families);
edge Family_MembersToStudents = graph.newEdge(Family_Members, Students);
edge Student_ClassesToStudents = graph.newEdge(Student_Classes, Students);
edge Student_ClassesToClasses = graph.newEdge(Student_Classes, Classes);
edge FamiliesToParents = graph.newEdge(Families, Parents);
edge HomeworkToStudents = graph.newEdge(Homework, Students);
edge ReportsToStudents = graph.newEdge(Reports, Students);
for (edge e : graph.edges) {// set default edge color and type
GA.arrowType(e) = ogdf::EdgeArrow::Last;
GA.strokeType(e) = ogdf::StrokeType::Solid;
GA.strokeColor(e) = Color("#bababa");
}
}
示例3: readColor
static inline bool readVizAttribute(
GraphAttributes &GA,
edge e,
const pugi::xml_node tag)
{
const long attrs = GA.attributes();
if(string(tag.name()) == "viz:color") {
if(attrs & GraphAttributes::edgeStyle) {
return readColor(GA.strokeColor(e), tag);
}
} else if(string(tag.name()) == "viz:thickness") {
auto thickAttr = tag.attribute("value");
if(!thickAttr) {
GraphIO::logger.lout() << "Missing \"value\" on thickness tag." << std::endl;
return false;
}
if(attrs & GraphAttributes::edgeDoubleWeight) {
GA.doubleWeight(e) = thickAttr.as_double();
} else if(attrs & GraphAttributes::edgeIntWeight) {
GA.intWeight(e) = thickAttr.as_int();
}
} else if(string(tag.name()) == "viz:shape") {
// Values: solid, dotted, dashed, double. Not supported in OGDF.
} else {
GraphIO::logger.lout() << "Incorrect tag \"" << tag.name() << "\"." << std::endl;
return false;
}
return true;
}
示例4: writeAttributes
static inline void writeAttributes(
std::ostream &out, int depth,
const GraphAttributes &GA, edge e)
{
const long attrs = GA.attributes();
if(attrs & GraphAttributes::edgeStyle) {
const Color &color = GA.strokeColor(e);
const int red = color.red();
const int green = color.green();
const int blue = color.blue();
const int alpha = color.alpha();
GraphIO::indent(out, depth) << "<viz:color "
<< "red=\"" << red << "\" "
<< "green=\"" << green << "\" "
<< "blue=\"" << blue << "\" "
<< "alpha=\"" << alpha << "\" "
<< "/>\n";
}
if(attrs & GraphAttributes::edgeDoubleWeight) {
const double weight = GA.doubleWeight(e);
GraphIO::indent(out, depth) << "<viz:thickness "
<< "value=\"" << weight << "\" "
<< "/>\n";
} else if(attrs & GraphAttributes::edgeIntWeight) {
const int weight = GA.intWeight(e);
GraphIO::indent(out, depth) << "<viz:thickness "
<< "value=\"" << weight << "\" "
<< "/>\n";
}
/*
* Edge type and arrow are not supported by VIZ module. Therefore, they
* need to be written using <attvalues> tag (for estetic reasons, we write
* them only if either of them is present). For convenience reasons, we use
* the same names and values as in GraphML format.
*/
if(!(attrs & (GraphAttributes::edgeType | GraphAttributes::edgeArrow))) {
return;
}
GraphIO::indent(out, depth) << "<attvalues>\n";
if(attrs & GraphAttributes::edgeType) {
writeAttValue(
out, depth + 1,
graphml::a_edgeType, graphml::toString(GA.type(e)));
}
if(attrs & GraphAttributes::edgeArrow) {
writeAttValue(
out, depth + 1,
graphml::a_edgeArrow, graphml::toString(GA.arrowType(e)));
}
GraphIO::indent(out, depth) << "</attvalues>\n";
}
示例5: writeAttributes
static inline void writeAttributes(
std::ostream &out,
const GraphAttributes &GA, const node &v)
{
const long flags = GA.attributes();
out << "[";
bool separator = false; // Wheter to put separator before attribute.
if(flags & GraphAttributes::nodeId) {
writeAttribute(out, separator, "id", GA.idNode(v));
}
if(flags & GraphAttributes::nodeLabel) {
writeAttribute(out, separator, "label", GA.label(v));
}
if(flags & GraphAttributes::nodeTemplate) {
writeAttribute(out, separator, "comment", GA.templateNode(v));
}
if(flags & GraphAttributes::nodeGraphics) {
writeAttribute(out, separator, "width", GA.width(v));
writeAttribute(out, separator, "height", GA.height(v));
writeAttribute(out, separator, "shape", dot::toString(GA.shape(v)));
out << ", pos=\"" << GA.x(v) << "," << GA.y(v);
if(flags & GraphAttributes::threeD) {
out << "," << GA.z(v);
}
out << "\"";
}
if(flags & GraphAttributes::nodeStyle) {
writeAttribute(out, separator, "color", GA.strokeColor(v));
writeAttribute(out, separator, "fillcolor", GA.fillColor(v));
writeAttribute(out, separator, "stroketype", toString(GA.strokeType(v)));
writeAttribute(out, separator, "strokewidth", GA.strokeWidth(v));
writeAttribute(out, separator, "fillpattern", toString(GA.fillPattern(v)));
}
if(flags & GraphAttributes::nodeType) {
writeAttribute(out, separator, "type", int(GA.type(v)));
}
if(flags & GraphAttributes::nodeWeight) {
writeAttribute(out, separator, "weight", GA.weight(v));
}
out << "]";
}
示例6: writeAttributes
static inline void writeAttributes(
std::ostream &out,
const GraphAttributes &GA, const edge &e)
{
const long flags = GA.attributes();
out << "[";
bool comma = false; // Whether to put comma before attribute.
if(flags & GraphAttributes::edgeLabel) {
writeAttribute(out, comma, "label", GA.label(e));
}
if(flags & GraphAttributes::edgeDoubleWeight) {
writeAttribute(out, comma, "weight", GA.doubleWeight(e));
} else if(flags & GraphAttributes::edgeIntWeight) {
writeAttribute(out, comma, "weight", GA.intWeight(e));
}
if(flags & GraphAttributes::edgeGraphics) {
// This should be legal cubic B-Spline in the future.
std::stringstream sstream;
for(const DPoint &p : GA.bends(e)) {
sstream << p.m_x << "," << p.m_y << " ";
}
writeAttribute(out, comma, "pos", sstream.str());
}
if(flags & GraphAttributes::edgeArrow) {
writeAttribute(out, comma, "dir", dot::toString(GA.arrowType(e)));
}
if(flags & GraphAttributes::edgeStyle) {
writeAttribute(out, comma, "color", GA.strokeColor(e));
}
if(flags & GraphAttributes::edgeType) {
writeAttribute(out, comma, "arrowhead", GA.arrowType(e));
// Additionaly, according to IBM UML doc dependency is a dashed edge.
if(GA.type(e) == Graph::dependency) {
writeAttribute(out, comma, "style", "dashed");
}
}
// NOTE: Edge subgraphs are not supported.
out << "]";
}
示例7: readData
bool GraphMLParser::readData(
GraphAttributes &GA,
const edge &e,
const pugi::xml_node edgeData)
{
pugi::xml_attribute keyId = edgeData.attribute("key");
if (!keyId) {
GraphIO::logger.lout() << "Edge data does not have a key." << endl;
return false;
}
const long attrs = GA.attributes();
pugi::xml_text text = edgeData.text();
switch(graphml::toAttribute(m_attrName[keyId.value()])) {
case graphml::a_edgeLabel:
if(attrs & GraphAttributes::edgeLabel) {
GA.label(e) = text.get();
}
break;
case graphml::a_edgeWeight:
if(attrs & GraphAttributes::edgeIntWeight) {
GA.intWeight(e) = text.as_int();
} else if(attrs & GraphAttributes::edgeDoubleWeight) {
GA.doubleWeight(e) = text.as_double();
}
break;
case graphml::a_edgeType:
if(attrs & GraphAttributes::edgeType) {
GA.type(e) = graphml::toEdgeType(text.get());
}
break;
case graphml::a_edgeArrow:
if(attrs & GraphAttributes::edgeArrow) {
GA.arrowType(e) = graphml::toArrow(text.get());
}
break;
case graphml::a_edgeStroke:
if(attrs & GraphAttributes::edgeStyle) {
GA.strokeColor(e) = text.get();
}
break;
default:
GraphIO::logger.lout(Logger::LL_MINOR) << "Unknown edge attribute with \""
<< keyId.value()
<< "\"." << endl;
}
return true;
}
示例8: write_ogml_layout_nodes_edges
static void write_ogml_layout_nodes_edges(const GraphAttributes &A, ostream &os)
{
const Graph &G = A.constGraph();
if (A.has(GraphAttributes::nodeGraphics | GraphAttributes::nodeStyle))
{
for(node v : G.nodes) {
GraphIO::indent(os,4) << "<nodeStyle idRef=\"n" << v->index() << "\">\n";
if(A.has(GraphAttributes::nodeGraphics)) {
GraphIO::indent(os,5) << "<location x=\"" << A.x(v)-0.5*A.width(v) << "\" y=\""<< A.y(v)-0.5*A.height(v) << "\" />\n";
GraphIO::indent(os,5) << "<shape type=\"";
switch (A.shape(v)) {
case shRect:
os << "rect";
break;
case shRoundedRect:
os << "roundedRect";
break;
case shEllipse:
os << "ellipse";
break;
case shTriangle:
os << "triangle";
break;
case shPentagon:
os << "pentagon";
break;
case shHexagon:
os << "hexagon";
break;
case shOctagon:
os << "octagon";
break;
case shRhomb:
os << "rhomb";
break;
case shTrapeze:
os << "trapeze";
break;
case shParallelogram:
os << "parallelogram";
break;
case shInvTriangle:
os << "invTriangle";
break;
case shInvTrapeze:
os << "invTrapeze";
break;
case shInvParallelogram:
os << "invParallelogram";
break;
case shImage:
os << "image";
break;
}
os << "\" width=\"" << A.width(v) << "\" height=\"" << A.height(v) << "\" />\n";
}
if(A.has(GraphAttributes::nodeStyle)) {
// fill-tag
GraphIO::indent(os,5) << "<fill";
// color-attribute of fill-tag
os << " color=\"" << A.fillColor(v) << "\"";
// pattern- and patternColor-attribute of fill-tag (closing)
os << " pattern=\"" << fillPatternToOGML(A.fillPattern(v)) << "\" patternColor=\"" << A.fillBgColor(v) << "\" />\n";
// line-tag
GraphIO::indent(os,5) << "<line type=\"" << edgeStyleToOGML(A.strokeType(v)) << "\" width=\"" << A.strokeWidth(v) << "\""
<< " color=\"" << A.strokeColor(v) << "\"";
// closing fill-tag
os << " />\n";
}
GraphIO::indent(os,4) << "</nodeStyle>\n";
}
}
if (A.has(GraphAttributes::edgeGraphics | GraphAttributes::edgeStyle))
{
int pointId = 0;
for(edge e : G.edges) {
GraphIO::indent(os,4) << "<edgeStyle idRef=\"e" << e->index() << "\">\n";
if(A.has(GraphAttributes::edgeStyle)) {
GraphIO::indent(os,5) << "<line ";
if (A.has(GraphAttributes::edgeStyle)) {
os << "type=\"" << edgeStyleToOGML(A.strokeType(e)) << "\" width=\"" << A.strokeWidth(e) << "\" ";
os << "color=\"" << A.strokeColor(e) << "\" />\n";
} else {
os << " />\n";
}
}
// TODO review the handling of edge arrows
if(A.has(GraphAttributes::edgeArrow))
{
//.........这里部分代码省略.........
示例9: read
//.........这里部分代码省略.........
weight = nodeSon->m_intValue;
break;
}
}
// check if everything required is defined correctly
if (vId == notDefined) {
setError("node id not defined");
return false;
}
// create new node if necessary and assign attributes
if (m_mapToNode[vId] == nullptr) m_mapToNode[vId] = G.newNode();
node v = m_mapToNode[vId];
if (AG.attributes() & GraphAttributes::nodeGraphics)
{
AG.x(v) = x;
AG.y(v) = y;
AG.width (v) = w;
AG.height(v) = h;
AG.shape(v) = strToShape[shape];
}
if (AG.attributes() & GraphAttributes::nodeLabel)
AG.label(m_mapToNode[vId]) = label;
if (AG.attributes() & GraphAttributes::nodeTemplate)
AG.templateNode(m_mapToNode[vId]) = templ;
if (AG.attributes() & GraphAttributes::nodeId)
AG.idNode(m_mapToNode[vId]) = vId;
if (AG.attributes() & GraphAttributes::nodeWeight)
AG.weight(m_mapToNode[vId]) = weight;
if (AG.attributes() & GraphAttributes::nodeStyle)
{
AG.fillColor(m_mapToNode[vId]) = fill;
AG.strokeColor(m_mapToNode[vId]) = line;
AG.setFillPattern(m_mapToNode[vId], intToFillPattern(pattern));
AG.setStrokeType(m_mapToNode[vId], intToStrokeType(stipple));
AG.strokeWidth(m_mapToNode[vId]) = lineWidth;
}
}//node
//Todo: line style set stipple value
break;
case edgePredefKey: {
string arrow; // the arrow type attribute
string fill; //the color fill attribute
int stipple = 1; //the line style
float lineWidth = 1.0f;
double edgeWeight = 1.0;
int subGraph = 0; //edgeSubGraphs attribute
string label; // label attribute
if (son->m_valueType != gmlListBegin) break;
// set attributes to default values
int sourceId = notDefined, targetId = notDefined;
Graph::EdgeType umlType = Graph::association;
// read all relevant attributes
GmlObject *edgeSon = son->m_pFirstSon;
for(; edgeSon; edgeSon = edgeSon->m_pBrother) {
switch(id(edgeSon)) {
case sourcePredefKey:
if (edgeSon->m_valueType != gmlIntValue) break;
sourceId = edgeSon->m_intValue;
break;
示例10: getBasicGraphAttributes
//*************************************************************
// returns GraphAttributes associated with basic graph i
//
void SimDraw::getBasicGraphAttributes(int i, GraphAttributes &GA, Graph &G)
{
G = m_G;
GA.init(G,m_GA.attributes());
List<edge> LE;
m_G.allEdges(LE);
for(edge eLE : LE)
if(m_GA.inSubGraph(eLE,i))
{
for(node v : G.nodes)
{
if(compare(GA,v,m_GA,eLE->source()))
{
if(m_GA.attributes() & GraphAttributes::nodeGraphics)
{
GA.x(v) = m_GA.x(eLE->source());
GA.y(v) = m_GA.y(eLE->source());
GA.height(v) = m_GA.height(eLE->source());
GA.width(v) = m_GA.width(eLE->source());
}
if(m_GA.attributes() & GraphAttributes::nodeId)
GA.idNode(v) = m_GA.idNode(eLE->source());
if(m_GA.attributes() & GraphAttributes::nodeLabel)
GA.label(v) = m_GA.label(eLE->source());
}
if(compare(GA,v,m_GA,eLE->target()))
{
if(m_GA.attributes() & GraphAttributes::nodeGraphics)
{
GA.x(v) = m_GA.x(eLE->target());
GA.y(v) = m_GA.y(eLE->target());
GA.height(v) = m_GA.height(eLE->target());
GA.width(v) = m_GA.width(eLE->target());
}
if(m_GA.attributes() & GraphAttributes::nodeId)
GA.idNode(v) = m_GA.idNode(eLE->target());
if(m_GA.attributes() & GraphAttributes::nodeLabel)
GA.label(v) = m_GA.label(eLE->target());
}
}
for(edge e : G.edges)
{
if(compare(GA,e->source(),m_GA,eLE->source())
&& compare(GA,e->target(),m_GA,eLE->target()))
{
if(m_GA.attributes() & GraphAttributes::edgeIntWeight)
GA.intWeight(e) = m_GA.intWeight(eLE);
if(m_GA.attributes() & GraphAttributes::edgeLabel)
GA.label(e) = m_GA.label(eLE);
if(m_GA.attributes() & GraphAttributes::edgeStyle)
GA.strokeColor(e) = m_GA.strokeColor(eLE);
if(m_GA.attributes() & GraphAttributes::edgeGraphics)
GA.bends(e) = m_GA.bends(eLE);
}
}
}
else
{
List<edge> LE2;
G.allEdges(LE2);
for(edge e2 : LE2)
{
if(compare(GA,e2->source(),m_GA,eLE->source())
&& compare(GA,e2->target(),m_GA,eLE->target()))
{
G.delEdge(e2);
}
}
}
//remove all Nodes with degree == 0
//this can change the IDs of the nodes in G.
List<node> LN;
G.allNodes(LN);
for(node v : LN)
if(v->degree() == 0)
G.delNode(v);
}//end getBasicGraphAttributes