]> git.llucax.com Git - z.facultad/75.42/figuras.git/blobdiff - circulo.cpp
Se agrega una parte del informe con una captura de pantalla.
[z.facultad/75.42/figuras.git] / circulo.cpp
index 3fe240556bcae7d6b8d66c7bd6cb3bc0fc62a552..6b03e9a6e6cd50d2f7e8e4205539ae8e6d9d67d6 100644 (file)
@@ -2,8 +2,8 @@
  *
  * Taller de Programación (75.42).
  *
  *
  * 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
  *
  * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
  * 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,
 #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;
         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
 }
 
 #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));
 }
 
 }