]> git.llucax.com Git - z.facultad/75.42/figuras.git/blob - circulo.cpp
Ya se setea bien el grueso del trazo y anda bien el círculo.
[z.facultad/75.42/figuras.git] / circulo.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: sáb sep 20 19:39:13 ART 2003
13  *
14  * $Id$
15  */
16
17 #include "circulo.h"
18
19 #ifdef DEBUG
20 #   include <iostream>
21 #endif
22
23 Circulo::Circulo(size_t color, size_t grosor, const Punto& centro,
24         const char* nombre, int radio):
25         Figura(color, grosor, centro, nombre), radio(radio) {
26 #ifdef DEBUG
27     std::cerr << "En constructor de Círculo." << std::endl;
28 #endif
29 }
30
31 Circulo::~Circulo(void) {
32 #ifdef DEBUG
33     std::cerr << "En destructor de Círculo." << std::endl;
34 #endif
35 }
36
37 void Circulo::dibujar(GtkWidget* widget) const {
38 //void Circulo::dibujar(GdkGC* gc, GdkDrawable *window) const {
39 #ifdef DEBUG
40     std::cerr << "En dibujar de Círculo." << std::endl;
41 #endif
42     // Copio el contexto gráfico del área de dibujo.
43     GdkGC* gc = gdk_gc_new(GDK_DRAWABLE(widget->window));
44     // Le doy los nuevos valores.
45     set_gc(gc);
46     // Dibujo el círculo.
47     gdk_draw_arc(
48             // Área dibujable.
49             GDK_DRAWABLE(widget->window),
50             // Contexto gráfico,
51             gc, 
52             // No lo rellena.
53             FALSE,
54             // X, Y de la esquina superior izquierda.
55             centro.x - radio, centro.y - radio,
56             // ancho y alto del cuadrado que circunscribe el círculo.
57             radio * 2, radio * 2,
58             // de 0 a 360 grados.
59             0, 64 * 360);
60     // Libero la copia del contexto gráfico.
61     g_object_unref(G_OBJECT(gc));
62 }
63