1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
6 * Graficador de figuras.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: Sat Sep 20 06:09:02 ART 2003
17 #include "rectangulo.h"
23 Rectangulo::Rectangulo(size_t color, size_t grosor, const Punto& centro,
24 const char* nombre, int ancho, int alto):
25 Figura(color, grosor, centro, nombre), ancho(ancho), alto(alto) {
27 std::cerr << "En constructor de Rectángulo." << std::endl;
31 Rectangulo::~Rectangulo(void) {
33 std::cerr << "En destructor de Rectángulo." << std::endl;
37 void Rectangulo::dibujar(GtkWidget* widget) const {
39 std::cerr << "En dibujar de Rectángulo." << std::endl;
41 // Obtengo un contexto gráfico con el grosor y color de la figura.
42 GdkGC* gc = get_gc(widget);
43 // Lado de la izquierda.
46 GDK_DRAWABLE(widget->window),
49 // X, Y del vértice superior.
50 centro.x - ancho / 2, centro.y - alto / 2,
51 // X, Y del vértice inferior.
52 centro.x - ancho / 2, centro.y + alto / 2);
53 // Lado de la derecha.
54 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
55 // X, Y del vértice superior.
56 centro.x + ancho / 2, centro.y - alto / 2,
57 // X, Y del vértice inferior.
58 centro.x + ancho / 2, centro.y + alto / 2);
60 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
61 // X, Y del vértice de la izquierda.
62 centro.x - ancho / 2, centro.y - alto / 2,
63 // X, Y del vértice de la derecha.
64 centro.x + ancho / 2, centro.y - alto / 2);
66 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
67 // X, Y del vértice de la izquierda.
68 centro.x - ancho / 2, centro.y + alto / 2,
69 // X, Y del vértice de la derecha.
70 centro.x + ancho / 2, centro.y + alto / 2);
71 // Libero la copia del contexto gráfico.
72 g_object_unref(G_OBJECT(gc));