X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=polygon.cc;h=4068919f64fe79a98698347fe7e1cb485216ca78;hb=01b5ab3f0b75969230e0f9c41e55992b3d29edee;hp=e121e2cd19ff155f3af9a2ec4cdba443f78feeae;hpb=8697ab57c9138aa2bb1657a971e4c2cc5e4a1606;p=universe.git diff --git a/polygon.cc b/polygon.cc index e121e2c..4068919 100644 --- a/polygon.cc +++ b/polygon.cc @@ -81,31 +81,15 @@ void Polygon::draw_contours(SimpleWindow *window) { } #endif -#ifdef CAIRO_SUPPORT -void Polygon::draw(cairo_t* context_resource) { - cairo_set_line_width(context_resource, 1.0); - cairo_set_source_rgb (context_resource, _red, _green, _blue); - cairo_move_to(context_resource, _x[0], _y[0]); - for(int n = 0; n < _nb_vertices; n++) { - cairo_line_to(context_resource, _x[n], _y[n]); - } - cairo_close_path(context_resource); - cairo_stroke_preserve(context_resource); - cairo_fill(context_resource); +void Polygon::draw(Canvas *canvas) { + canvas->set_drawing_color(_red, _green, _blue); + canvas->draw_polygon(1, _nb_vertices, _x, _y); } -void Polygon::draw_contours(cairo_t* context_resource) { - cairo_set_line_width(context_resource, 1.0); - cairo_set_source_rgb (context_resource, 0.0, 0.0, 0.0); - // cairo_set_source_rgb (context_resource, 1.0, 1.0, 1.0); - cairo_move_to(context_resource, _x[0], _y[0]); - for(int n = 0; n < _nb_vertices; n++) { - cairo_line_to(context_resource, _x[n], _y[n]); - } - cairo_close_path(context_resource); - cairo_stroke(context_resource); +void Polygon::draw_contours(Canvas *canvas) { + canvas->set_drawing_color(0.0, 0.0, 0.0); + canvas->draw_polygon(0, _nb_vertices, _x, _y); } -#endif void Polygon::set_vertex(int k, scalar_t x, scalar_t y) { _relative_x[k] = x; @@ -209,7 +193,9 @@ void Polygon::initialize(int nb_polygons) { _nb_polygons = nb_polygons; - a = _relative_x[_nb_vertices - 1] * _relative_y[0] - _relative_x[0] * _relative_y[_nb_vertices - 1]; + a = _relative_x[_nb_vertices - 1] * _relative_y[0] + - _relative_x[0] * _relative_y[_nb_vertices - 1]; + for(int n = 0; n < _nb_vertices - 1; n++) a += _relative_x[n] * _relative_y[n+1] - _relative_x[n+1] * _relative_y[n]; a *= 0.5;