//------------------------------------------------------------------------ void draw_dashes_draft() { pixfmt pixf(rbuf_window()); base_renderer rb(pixf); primitives_renderer prim(rb); outline_rasterizer ras(prim); int i; for(i = 0; i < m_graph.get_num_edges(); i++) { graph::edge e = m_graph.get_edge(i); graph::node n1 = m_graph.get_node(e.node1, width(), height()); graph::node n2 = m_graph.get_node(e.node2, width(), height()); curve c(n1.x, n1.y, n2.x, n2.y); dash_stroke_draft<curve> s(c, 6.0, 3.0, m_width.value()); int r = rand() & 0x7F; int g = rand() & 0x7F; int b = rand() & 0x7F; int a = 255; if(m_translucent.status()) a = 80; prim.line_color(agg::srgba8(r, g, b, a)); ras.add_path(s); } }
//------------------------------------------------------------------------ void draw_dashes_fine(scanline_rasterizer& ras, solid_renderer& solid, draft_renderer& draft) { int i; for(i = 0; i < m_graph.get_num_edges(); i++) { graph::edge b = m_graph.get_edge(i); graph::node n1 = m_graph.get_node(b.node1, width(), height()); graph::node n2 = m_graph.get_node(b.node2, width(), height()); curve c(n1.x, n1.y, n2.x, n2.y); dash_stroke_fine<curve> s(c, 6.0, 3.0, m_width.value()); render_edge_fine(ras, solid, draft, s); } }
//------------------------------------------------------------------------ void draw_nodes_draft() { pixfmt pixf(rbuf_window()); base_renderer rb(pixf); primitives_renderer prim(rb); int i; for(i = 0; i < m_graph.get_num_nodes(); i++) { graph::node n = m_graph.get_node(i, width(), height()); prim.fill_color(m_gradient_colors[147]); prim.line_color(m_gradient_colors[255]); prim.outlined_ellipse(int(n.x), int(n.y), 10, 10); prim.fill_color(m_gradient_colors[50]); prim.solid_ellipse(int(n.x), int(n.y), 4, 4); } }
//------------------------------------------------------------------------ void draw_nodes_fine(scanline_rasterizer& ras) { gradient_span_alloc sa; pixfmt pixf(rbuf_window()); base_renderer rb(pixf); int i; for(i = 0; i < m_graph.get_num_nodes(); i++) { graph::node n = m_graph.get_node(i, width(), height()); agg::ellipse ell(n.x, n.y, 5.0 * m_width.value(), 5.0 * m_width.value()); double x, y; switch(m_draw) { case 0: ell.rewind(0); while(!agg::is_stop(ell.vertex(&x, &y))); break; case 1: ras.reset(); ras.add_path(ell); break; case 2: ras.reset(); ras.add_path(ell); ras.sort(); break; case 3: { gradient_function gf; agg::trans_affine mtx; mtx *= agg::trans_affine_scaling(m_width.value() / 2.0); mtx *= agg::trans_affine_translation(n.x, n.y); mtx.invert(); interpolator inter(mtx); gradient_span_gen sg(inter, gf, m_gradient_colors, 0.0, 10.0); gradient_renderer ren(rb, sa, sg); ras.add_path(ell); agg::render_scanlines(ras, m_sl, ren); } break; } } }
//------------------------------------------------------------------------ void draw_polygons(scanline_rasterizer& ras, solid_renderer& solid, draft_renderer& draft) { int i; if(m_type.cur_item() == 4) { ras.gamma(agg::gamma_threshold(0.5)); } for(i = 0; i < m_graph.get_num_edges(); i++) { graph::edge b = m_graph.get_edge(i); graph::node n1 = m_graph.get_node(b.node1, width(), height()); graph::node n2 = m_graph.get_node(b.node2, width(), height()); curve c(n1.x, n1.y, n2.x, n2.y); render_edge_fine(ras, solid, draft, c); } ras.gamma(agg::gamma_none()); }
void partialgraph::divide_graph(const graph& g, int number, std::string outfile_prefix) { // divided to equal nodes per graph const int totalnode = g.get_node_num(); nodepergraph = ceil((double) totalnode / (double) number); int nodecnt = 0; std::vector<NodePtr> pnvec = g.get_node(); for (int i = 0; i < number; ++i) { // convert i to string std::stringstream ss_cnt; ss_cnt << i; // obtain output file name for this part of the graph std::string outfile = outfile_prefix + ss_cnt.str() + ".txt"; // open file FILE* fp = fopen(outfile.c_str(), "w"); int nodelimit = (nodecnt + nodepergraph) < totalnode ? (nodecnt + nodepergraph) : totalnode; // print node number fprintf(fp, "%d\n", nodelimit - nodecnt); // print start node fprintf(fp, "%d\n", nodecnt); // print end node fprintf(fp, "%d\n", nodelimit - 1); for (; nodecnt < nodelimit; ++nodecnt) { // print node id fprintf(fp, "%d\n", nodecnt); // print neighbors const std::vector<int>& nbvec = pnvec[nodecnt]->nbvec; fprintf(fp, "%d\n", nbvec.size()); for (int j = 0; j < nbvec.size(); ++j) fprintf(fp, "%d ", nbvec[j]); fprintf(fp, "\n"); // print walkers const std::vector<int>& walkervec = pnvec[nodecnt]->walkervec; fprintf(fp, "%d\n", walkervec.size()); for (int j = 0; j < walkervec.size(); ++j) fprintf(fp, "%d ", walkervec[j]); fprintf(fp, "\n"); } fclose(fp); } }