X-Git-Url: https://git.llucax.com/z.facultad/75.42/figuras.git/blobdiff_plain/4941bea9d00a9664fe6cd6f971bc7a02e12d4c47..22d59b32c46e38bfd1937377a470a3ef45c9fc5c:/rectangulo.cpp diff --git a/rectangulo.cpp b/rectangulo.cpp index 450e670..da7e087 100644 --- a/rectangulo.cpp +++ b/rectangulo.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 Rectangulo::Rectangulo(size_t color, size_t grosor, const Punto& centro, - const char* nombre, float ancho, float alto): + const char* nombre, int ancho, int alto): Figura(color, grosor, centro, nombre), ancho(ancho), alto(alto) { #ifdef DEBUG std::cerr << "En constructor de Rectángulo." << std::endl; @@ -34,9 +34,43 @@ Rectangulo::~Rectangulo(void) { #endif } -void Rectangulo::dibujar(std::ostream& out) const { - out << "Rectangulo("; - Figura::dibujar(out); - out << ", ancho(" << ancho << "), alto(" << alto << "))"; +void Rectangulo::dibujar(GtkWidget* widget) const { +#ifdef DEBUG + std::cerr << "En dibujar de Rectángulo." << 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); + // Lado de la izquierda. + gdk_draw_line( + // Área dibujable. + GDK_DRAWABLE(widget->window), + // Contexto gráfico. + gc, + // X, Y del vértice superior. + centro.x - ancho / 2, centro.y - alto / 2, + // X, Y del vértice inferior. + centro.x - ancho / 2, centro.y + alto / 2); + // Lado de la derecha. + gdk_draw_line(GDK_DRAWABLE(widget->window), gc, + // X, Y del vértice superior. + centro.x + ancho / 2, centro.y - alto / 2, + // X, Y del vértice inferior. + centro.x + ancho / 2, centro.y + alto / 2); + // Lado superior. + gdk_draw_line(GDK_DRAWABLE(widget->window), gc, + // X, Y del vértice de la izquierda. + centro.x - ancho / 2, centro.y - alto / 2, + // X, Y del vértice de la derecha. + centro.x + ancho / 2, centro.y - alto / 2); + // Lado inferior. + gdk_draw_line(GDK_DRAWABLE(widget->window), gc, + // X, Y del vértice de la izquierda. + centro.x - ancho / 2, centro.y + alto / 2, + // X, Y del vértice de la derecha. + centro.x + ancho / 2, centro.y + alto / 2); + // Libero la copia del contexto gráfico. + g_object_unref(G_OBJECT(gc)); }