*
* Taller de Programación (75.42).
*
- * Ejercicio Número 3:
- * Lista de figuras.
+ * Ejercicio Número 5:
+ * Graficador de figuras.
*
* Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
* Puede copiar, modificar y distribuir este programa bajo los términos de
#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;
#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));
}