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 // Copio el contexto gráfico del área de dibujo.
42 GdkGC* gc = gdk_gc_new(GDK_DRAWABLE(widget->window));
43 // Le doy los nuevos valores.
45 // Lado de la izquierda.
48 GDK_DRAWABLE(widget->window),
51 // X, Y del vértice superior.
52 centro.x - ancho / 2, centro.y - alto / 2,
53 // X, Y del vértice inferior.
54 centro.x - ancho / 2, centro.y + alto / 2);
55 // Lado de la derecha.
56 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
57 // X, Y del vértice superior.
58 centro.x + ancho / 2, centro.y - alto / 2,
59 // X, Y del vértice inferior.
60 centro.x + ancho / 2, centro.y + alto / 2);
62 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
63 // X, Y del vértice de la izquierda.
64 centro.x - ancho / 2, centro.y - alto / 2,
65 // X, Y del vértice de la derecha.
66 centro.x + ancho / 2, centro.y - alto / 2);
68 gdk_draw_line(GDK_DRAWABLE(widget->window), gc,
69 // X, Y del vértice de la izquierda.
70 centro.x - ancho / 2, centro.y + alto / 2,
71 // X, Y del vértice de la derecha.
72 centro.x + ancho / 2, centro.y + alto / 2);
73 // Libero la copia del contexto gráfico.
74 g_object_unref(G_OBJECT(gc));