]> git.llucax.com Git - z.facultad/75.42/figuras.git/blob - rectangulo.cpp
Se termina la parte mía del informe. Falta la parte común sobre GTK.
[z.facultad/75.42/figuras.git] / rectangulo.cpp
1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 5:
6  * Graficador de figuras.
7  *
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/).
11  *
12  * Creado: Sat Sep 20 06:09:02 ART 2003
13  *
14  * $Id$
15  */
16
17 #include "rectangulo.h"
18
19 #ifdef DEBUG
20 #   include <iostream>
21 #endif
22
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) {
26 #ifdef DEBUG
27     std::cerr << "En constructor de Rectángulo." << std::endl;
28 #endif
29 }
30
31 Rectangulo::~Rectangulo(void) {
32 #ifdef DEBUG
33     std::cerr << "En destructor de Rectángulo." << std::endl;
34 #endif
35 }
36
37 void Rectangulo::dibujar(GtkWidget* widget) const {
38 #ifdef DEBUG
39     std::cerr << "En dibujar de Rectángulo." << std::endl;
40 #endif
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.
44     gdk_draw_line(
45             // Área dibujable.
46             GDK_DRAWABLE(widget->window),
47             // Contexto gráfico.
48             gc,
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);
59     // Lado superior.
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);
65     // Lado inferior.
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));
73 }
74