X-Git-Url: https://git.llucax.com/z.facultad/75.42/figuras.git/blobdiff_plain/09eee1993f5b3310f6695639433fdf2d9e319db2..f5797a141b246a1997103dddb1e2a415c8b8363d:/circulo.cpp?ds=sidebyside diff --git a/circulo.cpp b/circulo.cpp index d0f2b97..6b03e9a 100644 --- a/circulo.cpp +++ b/circulo.cpp @@ -21,7 +21,7 @@ #endif Circulo::Circulo(size_t color, size_t grosor, const Punto& centro, - const char* nombre, float radio): + const char* nombre, int radio): Figura(color, grosor, centro, nombre), radio(radio) { #ifdef DEBUG std::cerr << "En constructor de Círculo." << std::endl; @@ -35,18 +35,28 @@ Circulo::~Circulo(void) { } void Circulo::dibujar(GtkWidget* widget) const { -//void Circulo::dibujar(GdkGC* gc, GdkDrawable *window) const { #ifdef DEBUG std::cerr << "En dibujar de Círculo." << std::endl; #endif - gdk_draw_arc(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // Copio el contexto gráfico del área de dibujo. + GdkGC* gc = gdk_gc_new(GDK_DRAWABLE(widget->window)); + // Le doy los nuevos valores. + set_gc(gc); + // Dibujo el círculo. + gdk_draw_arc( + // Área dibujable. + GDK_DRAWABLE(widget->window), + // Contexto gráfico, + gc, + // No lo rellena. FALSE, - 5, 5, - widget->allocation.width - 10, - widget->allocation.height - 10, + // X, Y de la esquina superior izquierda. + centro.x - radio, centro.y - radio, + // ancho y alto del cuadrado que circunscribe al círculo. + radio * 2, radio * 2, + // de 0 a 360 grados. 0, 64 * 360); - - //Figura::dibujar(out); + // Libero la copia del contexto gráfico. + g_object_unref(G_OBJECT(gc)); }