X-Git-Url: https://git.llucax.com/z.facultad/75.42/figuras.git/blobdiff_plain/4941bea9d00a9664fe6cd6f971bc7a02e12d4c47..074cfd6ced0df4c6a74cc6193194fa2489c05887:/circulo.cpp?ds=inline diff --git a/circulo.cpp b/circulo.cpp index 3fe2405..6b03e9a 100644 --- a/circulo.cpp +++ b/circulo.cpp @@ -2,8 +2,8 @@ * * Taller de Programación (75.42). * - * Ejercicio Número 3: - * Lista de figuras. + * Ejercicio Número 5: + * Graficador de figuras. * * Copyleft 2003 - Leandro Lucarella * Puede copiar, modificar y distribuir este programa bajo los términos de @@ -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; @@ -34,9 +34,29 @@ Circulo::~Circulo(void) { #endif } -void Circulo::dibujar(std::ostream& out) const { - out << "Circulo("; - Figura::dibujar(out); - out << ", radio(" << radio << "))"; +void Circulo::dibujar(GtkWidget* widget) const { +#ifdef DEBUG + std::cerr << "En dibujar de Círculo." << std::endl; +#endif + // 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, + // 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); + // Libero la copia del contexto gráfico. + g_object_unref(G_OBJECT(gc)); }