void renderLabels(const char* path) { BOOST_TEST_MESSAGE("Render: " << path); Cairo::RefPtr<Cairo::Surface> surface = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, META_TILE_SIZE * TILE_SIZE, META_TILE_SIZE * TILE_SIZE); Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(surface); cr->set_source_rgba(0.0, 0.0, 0.0, 1.0); cr->save(); cr->set_source_rgba(1.0, 1.0, 1.0, 1.0); cr->paint(); cr->restore(); std::vector<std::pair<string, FloatPoint>> toPlace; toPlace.push_back(std::pair<string, FloatPoint>("Karlsruhe", FloatPoint(40, 200))); toPlace.push_back(std::pair<string, FloatPoint>("Mannheim", FloatPoint(400, 200))); toPlace.push_back(std::pair<string, FloatPoint>("Stuttgard", FloatPoint(200, 260))); toPlace.push_back(std::pair<string, FloatPoint>("München", FloatPoint(380, 660))); toPlace.push_back(std::pair<string, FloatPoint>("Pforzheim", FloatPoint(200, 600))); toPlace.push_back(std::pair<string, FloatPoint>("Wien", FloatPoint(240, 680))); toPlace.push_back(std::pair<string, FloatPoint>("Paris", FloatPoint(40, 880))); toPlace.push_back(std::pair<string, FloatPoint>("Rom", FloatPoint(-40, 880))); toPlace.push_back(std::pair<string, FloatPoint>("Nothing", FloatPoint(400, 760))); toPlace.push_back(std::pair<string, FloatPoint>("To See", FloatPoint(720, 880))); toPlace.push_back(std::pair<string, FloatPoint>("Here", FloatPoint(720, 560))); toPlace.push_back(std::pair<string, FloatPoint>("Bielefeld", FloatPoint(420, 840))); renderer->renderLabels(cr, toPlace); BOOST_TEST_MESSAGE("Writing."); surface->flush(); surface->write_to_png(path); }
virtual void write(const Cairo::RefPtr<Cairo::Surface>& surface) { surface->flush(); //surface->write_to_png_stream(sigc::mem_fun(*this, &Renderer::PNGWriter::cairoWriter)); cairo_surface_write_to_png_stream(surface->cobj(), cairoWriter, (void*) buffer.get()); }
virtual void write(const Cairo::RefPtr<Cairo::Surface>& surface) { surface->flush(); /* do nothing because surface->flush() will call cairoWriter */ }