
On Wednesday 19 Apr 2006 16:46, Johan Oudinet wrote:
On 4/19/06, Fred Labrosse
wrote: All,
First, I'm very new to boost and BGL, so please forgive me if this is trivial.
I've created a graph (adjacency_list) using bundled properties and am now trying to write it as a dot file. I've written my property writer, but when I compile, I get several of:
/usr/include/boost/graph/graphviz.hpp: In function `void [snip] Not being very good at deciphering all that, I'm not sure what is happening. I do understand that it's missing an extraction operator but I'm not sure on what. The actual line in graphviz.hpp is:
out << get(vertex_id, *i);
Two questions:
- Could somebody tell me exactly what that get returns?
get returns the value from vertex_descriptor *i in the property map vertex_id
In your code, your adjacency_list uses listS so this vertex_id property is not define! That's the problem.
When you call write_graphviz, specify a property map to get an index from a vertex_descriptor (follow the example with write_graphviz and dynamic properties)
Many thanks for replying. However, I'm not sure how to do that. Here are the
relevant bits of my code (sorry for the length):
class place
{
public:
place(const imalib::imageD3* anAppearance, const std::string& aName,
unsigned short aNumber)
: appearance(anAppearance),
name(aName),
number(aNumber)
{
}
~place();
const imalib::imageD3* getAppearance() const
{
return(appearance);
}
const std::string& getName() const
{
return(name);
}
unsigned short getNumber() const
{
return(number);
}
private:
const imalib::imageD3* appearance;
std::string name;
unsigned short number;
};
class placeWriter
{
public:
placeWriter(const mapType& g)
: g(g)
{}
void operator()(std::ostream& out,
const mapType::vertex_descriptor& v) const
{
static imalib::imageRGB anImage;
out << "[label=\"" << g[v].getNumber() << "\",shapefile=\""
<< g[v].getName() << "\"];\n";
g[v].getAppearance()->toRGB(&anImage);
anImage.write(g[v].getName());
}
private:
const mapType& g;
};
typedef boost::adjacency_list