williamr@2: // Copyright 2004 The Trustees of Indiana University. williamr@2: williamr@2: // Distributed under the Boost Software License, Version 1.0. williamr@2: // (See accompanying file LICENSE_1_0.txt or copy at williamr@2: // http://www.boost.org/LICENSE_1_0.txt) williamr@2: williamr@2: // Authors: Douglas Gregor williamr@2: // Andrew Lumsdaine williamr@2: #ifndef BOOST_GRAPH_RANDOM_LAYOUT_HPP williamr@2: #define BOOST_GRAPH_RANDOM_LAYOUT_HPP williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: namespace boost { williamr@2: williamr@2: template williamr@2: void williamr@2: random_graph_layout(const Graph& g, PositionMap position_map, williamr@2: Dimension minX, Dimension maxX, williamr@2: Dimension minY, Dimension maxY, williamr@2: RandomNumberGenerator& gen) williamr@2: { williamr@2: typedef typename mpl::if_, williamr@2: uniform_int, williamr@2: uniform_real >::type distrib_t; williamr@2: typedef typename mpl::if_, williamr@2: RandomNumberGenerator&, williamr@2: uniform_01 > williamr@2: ::type gen_t; williamr@2: williamr@2: gen_t my_gen(gen); williamr@2: distrib_t x(minX, maxX); williamr@2: distrib_t y(minY, maxY); williamr@2: typename graph_traits::vertex_iterator vi, vi_end; williamr@2: for(tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) { williamr@2: position_map[*vi].x = x(my_gen); williamr@2: position_map[*vi].y = y(my_gen); williamr@2: } williamr@2: } williamr@2: williamr@2: } // end namespace boost williamr@2: williamr@2: #endif // BOOST_GRAPH_RANDOM_LAYOUT_HPP